2.12 それは命の证 ——ARC119~121

今天是 Blessing 的赞助周期的最后一篇古报。之后赞助歌曲未定。如果明天还是未定的话,那么可能会换成别的日志,或者继续 Blessing 的赞助。

ARC119

ARC119D Grid Repainting 3

考虑以行列为边,\((i,j)\) 表示从行点 \(i\) 连向列点 \(j\)。可以发现,对于一个连通块,我们一定得剩余一个行/列没法直接删(dfs 树的根)。于是我们能够删的行数+列数的总和是固定的,且能够删的行/列的分别最大值也是固定的。容易发现一定是存在某一个取最大值的时候是最优的。于是我们求出应该把行删满还是把列删满,然后据此构造即可(对于每个连通块选定一个合适的根)。

ARC119E Pancakes

即找到一组 \(x,y\),使得 \(|a_{x+1}-a_{x}|+|a_{y-1}-a_y|-|a_{x+1}-a_y|-|a_{x}-a_{y-1}|\) 最大。考虑分类讨论。假设 \(x<y\)\(a_x<a_y\),那么只有在 \(a_{x+1}>a_{y-1}\) 时才会 \(>0\)。可以根据 \(a_{x+1}\)\(a_y\) 的关系,以及 \(a_{x}\)\(a_{y-1}\) 的关系分成四类。但若我们更加仔细分析,那么发现其实只有两类,且每一类都是类似一个求 \(\max(\min_{c_j\ge d_i,j<i-2} b_j,e_i)\) 状物。用一个 BIT 即可。

ARC119F AtCoder Express 3

首先这题一眼看上去就是 dp 套 dp。于是我们需要想一个比较好的能够套 dp 的状态。由于我们肯定不会从后面的 A 走到前面的 A,所以可以如下设计:考虑进行到 \(i\),起点到 \([1,i]\) 最远的 A/B 的最短距离 \(f_a,f_b\)。这个是可以直接用 dp 套 dp 求解了。又因为若 \(f_a-f_b>2\),那么这个 \(f_a\) 就没用了。所以实际上只有 \(O(n^2)\) 种状态。

ARC120

ARC120D Bracket Score 2

考虑应该可以取到上界,即最大的 \(n\) 个数取正,其余取负。这个也是容易的:直接维护一个栈,如果与栈顶正负号相等那就放进栈中,否则就取出栈顶,栈顶取左括号,该数取右括号。

ARC120E 1D Party

考虑每个数的决策一定是,先往一个方向走,碰到另一个之后再拐回去,然后一直走。然后二分,进行 DP:\(f_{i,0/1}\) 表示 \(i\) 一开始往左/右走,最远能走到右侧的多少。转移分四类情况讨论一下即可。

ARC120F Wine Thief

建议看本题讨论区。并且提醒自己,不要头铁推式子。

\(G(n,k)\) 表示总方案数,容易算出。考虑一种方法:钦定 \(i\) 选,意味着钦定 \(i-1,i+1\) 不选。此时把 \(i-1,i,i+1\) 删掉,就变成了 \(G(n-3,k-1)\)\(i-2,i+2\) 不同时选)加上 \(F(i-2,n-4,k-2)\)(两者同时选)。我们把这些展开,发现是一个类似 \(\sum G(n-4i+1,k-2i+1)\) 的式子,但是有很烦的边界条件。研究清楚边界条件之后就做完了。

ARC121

ARC121D 1 or 2

观察发现,一定是存在一个区间都取单点,其余两两配对且一定是最小配最大,次小配次大这样的形式。并且一定是最外层 \(1\)\(i\)\(n\)\(n-i+1\)\([i+1,n-i]\) 中有一段单点区间,和一段区间 \([l,r]\) 满足 \(l,l+1,\dots\) 分别配 \(r,r-1\dots\)。于是预处理一下后两种的区间最值,然后枚举 \(i\) 即可。

ARC121E Directed Tree

考虑直接容斥。\(f(u,i)\) 表示 \(u\) 子树内钦定 \(i\) 个祖孙关系的情况。转移先直接背包,然后再 \(f(u,i)\times (sz_u-i)\to f(u,i+1)\)

ARC121F Logical Operations on Tree

操作一定是先把 and 全部并起来,然后再并 or,也就是说需要存在一个由 and 边组成的连通块使得其里面全是 0。有了这个结论,我们就直接树形 DP 即可。

posted @ 2024-03-26 08:28  LarsWerner  阅读(3)  评论(0编辑  收藏  举报