摘要:
" E. Yet Another Division Into Teams " 首先要想明白一个东西,就是当一个小组达到六个人的时候,它一定可以拆分成两个更优的小组。 这个题可以用动态规划来写,用一个数组来保存状态,用一个队列来尝试新的状态,但是因为上面的这个特性,每一次只会有三个新的状态。 我们用 阅读全文
摘要:
"L Common Subsequence" 参考: "ACM POJ 1458 Common Subsequence (最长公共子序列,动态规划)" 思路:二维动态规划。 :在截止至 的`i 1 s2 j 1`位置,两个串的最长公共子序列长度。 动态规划方程: 即如果 ,则表示当前最长公子序列可加 阅读全文
摘要:
" D. Shichikuji and Power Grid " 参考: "Codeforces Round 597 (Div. 2)" 思路:一个很裸的最小生成树。把建立基站看成是,城市与源点(虚构的)建边。由此建立最小生成树,即可得出答案。 代码: cpp // Created by CAD o 阅读全文
摘要:
"K Jury Compromise" 参考: "ACM POJ 1015 Jury Compromise(陪审团的人选,动态规划题,难)" 说实话真有点难想,用一个 来表示在选取 个人,辩控差为 (`j for`循环来更新这个值。具体思路还是看参考博客吧.... 优先队列默认 是最大值,如果写成 阅读全文
摘要:
"J FatMouse's Speed" 的题写得多了慢慢也有了思路,虽然也还只是很简单的 。 因为需要输出所有选择的老鼠,所以刚开始的时候想利用状态压缩来储存所选择的老鼠,后面才发现 太大`1 思路的话其实也不难,把体重排序之后,对速度求一个最长下降子序列即可。 对于每一次求最长有序子序列,只需要 阅读全文
摘要:
"I 最少拦截系统" 参考: "ACM HDU 1257 最少拦截系统" 、 思路:这个题其实是个贪心,每一次只需要找到一个离当前导弹高度最近的一个拦截系统进行拦截,即是最优解。 代码: cpp // Created by CAD on 2019/10/26. include using names 阅读全文
摘要:
"H Tickets" 参考: "Tickets——H" 思路:对于每一个买票的人来说,只需要决定他是自己买票还是跟前面的人一块买票即可。 假设三个人 A B C,当 C 要跟 B 一块买票的时候,B 不能够跟 A 一起买。 那么状态方程就应该是 ,保证了不会有一个人跟两个人一块买票的情况。 想清楚 阅读全文
摘要:
"G 免费馅饼" 参考: "免费馅饼\~ \~(hdu 1176)" 思路:刚开始始的时候想 ,但是数据太多了,而且有些情况也会漏掉。 于是 是最好的选择,但是 的时候又要考虑到一点,起始位置是固定的,无法确定最大值与起始位置的联系,所以,需要反着来算,从最后一秒开始计算,对于每一个时间点,每一个位 阅读全文
摘要:
"E Super Jumping! Jumping! Jumping!" 思路:就是按照求最长有序子序列的思路来写,跟 "Monkey and Banana" 的思路大同小异。 代码: cpp // Created by CAD on 2019/10/26. include using namesp 阅读全文
摘要:
"D Doing Homework" 参考: "ACM HDU 1074 Doing Homework(位运算,搜索,状态压缩DP)" 思路:因为每个作业给定的顺序就是按照字典序的顺序,所以不用再多去比较。 该题的 不大,同时我们又想用 来完成这道题,那么一个很好的办法来储存状态,就是状态压缩,利用 阅读全文