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 拿到第一位,分类讨论即可。

posted @ 2024-10-31 13:12  LCat90  阅读(7)  评论(0编辑  收藏  举报