
《算法竞赛进阶指南》合集
买了一本进阶指南开始看,把在里面做的题汇总在这个分类里,同时附上评测地点和在书上的对应页码。很多地方书上讲的很详细的话就只贴代码,或者加上一些自己的理解。
_rhinoceros_
非淡泊无以明志,非宁静无以致远。
展开
-
洛谷P1461 海明码 Hamming Codes(P9)
一、算法分析题目的关键在于,对于所找出的编码,任两两编码之间都至少有 d 个单位的 “Hamming距离”。解决方案即从起始数0开始,进行编码生成(实则就是从0开始枚举十进制数1,2,3,4…并转换为二进制数)。然后将生成的编码和前面的编码一一比较,只要保证当前生成编码和前面任一编码的hamming距离都大于等于d,则最后所有的编码都是满足条件的。这里求算hamming距离的方法,可以联系树状数...原创 2020-01-15 17:32:18 · 242 阅读 · 0 评论 -
(二分答案)洛谷P2884每月的费用Monthly Expense(P28)
一、算法分析答案具有单调性,可以考虑二分再验证的思路,在洛谷上做到这道题后发现,本题和《算法竞赛进阶指南》二分答案转为判定的例子很像,书上那个知识点的例子没有给出题号,本题可以相当于那个知识点的例题。(P28)二、代码及注释#include<iostream>#include<cstring>#include<cstdio>#include<a...原创 2020-02-24 20:06:25 · 472 阅读 · 0 评论 -
(迭代加深搜索)UVA529 Addition Chains(0x24节)
一、算法分析首先本题要求输出序列,我们发现,序列的第一个元素一定为1且最后一个元素一定为n,也就是说,如果用bfs的话,宽度是确定的(从1到n)。但是考虑n的范围过大,用bfs会爆空间,那么就想到使用dfs。要用dfs就要考虑解答树的深度,本题如果用dfs,解答树深度就是序列的长度。由于搜索过程中的解答树节点是随深度指数级增长的,本题解答树深度的最大情况初步估算与n接近(初步估算一下即可,这里不...原创 2020-01-23 15:40:01 · 153 阅读 · 0 评论 -
(贪心)洛谷P2887 [USACO07NOV]防晒霜Sunscreen
一、算法分析贪心策略是将牛按照minspf的降序排,然后在尽可能满足当前牛的情况下,优先取spf值大的防晒霜。这样选择的原因是本题的特点(也是一些其它贪心类问题的特点),即如果我放弃了当前的牛,后面的情况也只能一样或更差。题目要求找出可满足的最多牛,如果我们放弃了当前牛,可能导致后面有一个牛用了本来打算给当前牛的防晒霜,也可能没有,但是无论如何,答案不会因为我们的刻意放弃而增加。所以基本的贪心...原创 2020-01-26 11:03:15 · 366 阅读 · 0 评论 -
(对顶堆)SP15376 RMID - Running Median
一、算法分析题意很显然,要求在线动态维护中位数。这时要用到对顶堆思路,即既然我们是每次取中位数,那就要涉及从中间取数,这样我们设置一个大顶堆,一个小顶堆,把两个堆的堆顶“挨”在一起,维持两个堆的大小相等或最多相差1(因为可能总数是奇数个)这样中间的数就一定是从两个堆的堆顶产生了。难点在于维护的过程。其实个人对这个对顶堆的维护,个人理解是这样的,想象自己有一条绳子,绳子从中间分开,左边是大顶堆,...原创 2020-01-26 23:49:38 · 227 阅读 · 0 评论