8-30 DAIRY

本文分享了一次算法竞赛的经历,详细解析了三道题目:序列问题通过求逆序对计数解决;图论问题提出了一个40分的解题思路,并指出了正确的状态压缩动态规划方法;最后探讨了一个关于收益最大化的动态规划问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天到教室交作业领书学生大会所以没有完整考试,大概是十点多来机房十一点半下考,只写了第一题暴力,其他的还没仔细想出来,第二题暴力没

T1 sequence 30 暴力就不说了。

我们记 sum 为原序列一段区间的和,N 为这段区间元素个数,那么有: l<=sum<= r , l*N<=sum<=r*N ,于是我们在[al, ar]中同时减去l,如果 [al, ar] 的和小于零,则说明平均数不在范围内,同理 [al, ar] 区间减去 r,如果 [al. ar] 的和大于零,也说明平均数不在范围内。所以可以求出 ai 数组减去 l 的前缀和 S1i 与减去 r 的前缀和 S2i ,考虑[a,b],
S1b - S1a1 < 0 时,这个区间是不符合要求的,即 S1a1 > S1b ,所以我们只需求逆序对个数就行了。减去 r 时正好相反,将 S2 翻转一下求逆序对数就行了。因为我们求的是逆序对,而逆序对又是不符合要求的情况,因此将总的情况减去不合法的情况就可以了。
O( n log n )

T2 graph 0 暴力没打完,写了个随机数= =然后全WA

现在只懂(最多)40分做法:
把所有符合要求的边提出来,在其中选 m 条边,再判断一下每个点的度数是否为偶数就行了。
O( 2E* n )
正解是状压DP,我暂时还没复习到,不过这又让我发现我忽略掉的知识点!

T3 exploit 0 这个本来想推个dp无奈没时间,况且考虑到精度问题我向来不会做就也没写。
100%:【反着考虑】
F[i]表示第 i–n 个星球的最优收入,且假设从第 i 个星球开始时钻头能力为 1。
转移过程:如果在第 i 个星球开采,那么第 i+1–n 个星球的初始钻头能力就是 1*(1-0.01k)。
换句话说,就是 F[i+1]*(1-0.01k)。
所以 F[i]=max{F[i+1],F[i+1]*(1-0.01k)+a[i]}
//到这里都觉得这道题这样想还挺简单的。
对于维护型星球,大同小异。就系数和代价的正负而已。
//上面这句不是很明白啊。。
O(n)

晚上复习+学习STL各种操作

用Androidstudio的2024.1.2版本编程实现“日记本”,项目名称为diary03。主要功能:登录、注册功能,登录页面有记住密码选项;日记的增删改查等功能;要求能显示每一个日记的记录时间、记录内容;在日记本中添加图片时能调用摄像头拍照和从相册选择图片。 功能可自由扩充,页面美观,有良好的交互性;实现日记的创建、编辑、删除与查询等核心功能,输入密码时隐藏密码;使用SQLite数据库进行本地数据持久化存储;当前登录的用户信息储存在Sharedpreferences轻型数据类中,按钮实现页面跳转;项目整体色调为清新简约的淡蓝色。 要求:1、包含三张具有核心功能的表,有主键和其他字段约束;2、xml文件布局层次清晰,有样式的应用效果,使用较丰富且常见简单的控件;3、在控件上尽可能多的定义事件,比如列表上的单击事件,下拉列表的选择事件,菜单上的按钮事件等;4、正确利用activity生命周期的方法和组件间通信机制,完成页面的跳转和数据的传递,客户端app能正确传参,能根据参数实现activity所需功能。 注意:1、整个项目都使用常见且简单的方法,不要太复杂,完成功能达到要求即可,不使用lambda函数。2、展示完整的项目结构和完整而详细的代码文件以及项目运行指南,并详细展示每个文件的全部内容(包括java-com.example.diary03下的Java文件和layout文件夹、values文件夹下的文件),按照实现逻辑,拆分代码的核心模块,每个模块进行逐一解释,尽量通过比喻、类比等表达方式,帮助我理解代码中的抽象概念或复杂逻辑。
最新发布
06-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值