Day65 小贪心 & 自选杂题
哎怎么必可公益赛被爆破了,怎么 lifan 还加了几道我们的训练题目作为补偿。
CF 不知道死了多久了,一上午都没有打成 duel!
今天上午精神状态明显好了很多,可能和咖啡有点关系吧。
按照时间顺序写题吧。
AT_arc070_b
可以进行撤销背包,也可以算前后缀背包,都是记录方案数。不难的。
AT_agc016_c
耗时 30min。参数调了一会。
考虑 \(h=n,w=m-1\) 的情况,发现要满足条件就必须最左和最右的一列分别小于中间的和,并且其和大于中间。
然后再看 \(h=n-1,w=m-1\),发现四个角的位置只会被算一次,分别填上正数,其余都填负数,好像就比较合法了。
于是每个矩阵填一个正数即可,其余全部填 \(k\)。
但是可以卡的,所以把 \(k\) 调到上界即可。
AT_arc148_d
和 arc185a 一样,考虑最后一步,\(X+x\equiv Y+y\pmod m\) 且 \(X+y\equiv Y+x\pmod m\) 那么 Bob 才能赢。得出 \(2x\equiv 2y \pmod m\)。
那么 Bob 按照这样的 \((x,y)\) 的匹配一直走下去是一定可以赢的。易证冲要。否则 Alice 赢。
Exercise Deadlines
让我们转化成最小化逆序对数量。
贪心地考虑让后面数尽可能大,然后 ds 维护即可。
洗衣服
好题。但我还是太菜了。
傻逼东西,题解没有一个是对的,理解这玩意用了一个下午。
a1, a2, d
if a1 + d < a2 ans := a2 + d
else ans := a1 + d + d
为什么可以直接 \(f_i+g_{p_i}\) 进行合并?不清楚对不对,但是我们可以解释 \(f_i+g_{n-i+1}\) 这个式子。
这里 \(g\) 表示前面要用几次这个烘干。
不写了,调整,我不信考试考这个贪心。
可以确定,这个题没几个人理解。去看 zyr 博客的解释。
兔子与樱花
显然需要从下到上操作。猜测每次贪心按照选择之后增加代价的大小进行操作即可。
没必要证了。被卡空间考虑直接打表。
http://222.180.160.110:61235/contest/4196/problem/7
肯定要加一次。并且 \(a_i=1\) 肯定会选加。
可以证明除此以外至多加一次。设计贪心选择哪个加即可。注意加一定是第一次操作。
AT_arc159_d
这题有一定启发性地告诉我们有时候不能鲁莽 dp。可以加一点贪心。
基本上一眼就有了 ds 优化 dp 的做法。那是基于值域的,想想好像式子有一点小困难。
不妨以 \(l_i,r_i\) 来进行 dp。对于 \(r_j<l_i\) 的是好算的:\(dp_i=dp_j+r_i-l_i+1\)。
否则?如果这个区间不能把 \([l_i,r_j]\) 取满的话一定不是最优的。因为我们可以选择 \(r_j<l_i\) 的部分然后把 \([l_i,r_i]\) 取完。
后面转移是 \(dp_i=dp_j+r_i-r_j\)。对于 \(r_j \ge l_i\)。
分别维护 \(dp_j\) 和 \(dp_j-r_j\),把这两个值插入位置 \(r_j\) 即可。注意离散化。
P3634
人机题又不会了???
让我们先处理细节,即区间为 0 的情况,长度为 1 的 1 区间,以及剩下不确定的位置刚好 k 个的情况。
然后考虑构造偏序区间,把有包含关系的直接去掉。
一种贪心的构造是在每个区间的右端点处尽可能少地选点。但是我们要判断当前位置是否必选。
经典套路,记录前后缀答案,看是否选择 \(r-1\) 也是合法的即可。
可能还要一个证明:(引用自 dxm)
关于为什么答案一定是 f[i] = f[i-1] + 1 时的 a[i].r
因为取这些点的时候整体的忍者数量最少一定是 <= k 的(题目保证本身有解。所以有且只有在钦定这些点不能选的时候,才可能出现无解的情况。
P9347
当意识到 \(L\le n+2\) 时就可以猜测应该是从 1 开始依次向后构造。
所以我们先把 1 操作到最前面,然后后面就可以用 \(n-2\) 次操作排完序。
容易发现需要在 2 步之内把 1 拿到第一位,分类讨论即可。