【A】贪心、构造
https://vjudge.net/contest/775592
ReTF
CF1408F Two Different
对于 \(n=2^k\) 考虑每次合并相邻两个连续段,对位做这个操作。那么最后一定有解,代价 \(O(n\log n)\)。
那么我们找到最大的 \(2^k\le n\),然后对于前 \(2^k\) 做一遍,对后 \(2^k\) 做一遍即可满足条件。
可解性存疑的神秘题目时可以通过手玩小样例得出局部构造。
CF1172D Nauuo and Portals
理想情况下,\((a,b),(c,d)\) 的一对传送门会交换两行两列,我们对置换环做即可。
但是若后面还出现了一些传送门把我们本来搞好的传送弄乱了就不好了。我们直接禁止这种情况即可。
每次找到 \(r_i=1,c_j=1\),构造 \((i,1),(1,j)\),删除第一行第一列递归做。
直接禁止某种不利于构造的情况出现来便利自己的构造。
Gym102512E Valentine
首先每行加上 \(i\times V\),于是我们只需要考虑构造行内的即可。每次贪心构造较长的连续段。
优先思考难构造的情况,它们通常是题目的主干部分。
CF2068B Urban Planning
先将第一行第一列填 #,考虑我们填出一个阶梯状物,使用堆维护增量最小的。
然后 \(k\) 变为 \(10^6\) 级别。然后考虑让阶梯上长出来一些往上的列,继续缩减 \(k\)。
此时 \(k\) 变为 \(10^4\) 级别,然后在右下角一个子矩形进行暴搜即可。只有少量的情况无法使用阶梯构造出来,可以打表处理。
CF1965E Connected Cubes
可以看看 tj,就是将每列往外延申,然后往上形成一些间隔一个块的柱子。每层拿同色的合并连通块即可。
AT_arc183_d [ARC183D] Keep Perfectly Matched
对于一开始存在完美匹配的树,一定可以删空。
删除两个叶子的时候,我们会取反这个叶子之间的链上边的匹配情况,要求路径是 01 交替的。
考虑一条边的最大贡献为 \(\min(siz_u,siz_v)\),考虑构造方案顶到这个上界。
考虑设重心为根,则较小的子树一定是 \(u\) 的子树。
每次操作我们选择一条经过根的路径,且其中一端在最大的子树中即可构造出最大值。
对于子树内,预处理出 dfn 序,按照这个顺序删除。边要优先遍历 \(1\) 边。
CF1442D Sum
至多一个数组不会全部选择,缺一分治做。
AT_agc054_d [AGC054D] (ox)
若括号串合法,则一定只会移动括号。
否则,我们先把括号串变成合法的,这一步可以贪心做。
然后我们归并 ox 序列和 ( ) 序列,设一个 \(O(n^2)\) 的 dp 归并。
代价是逆序对个数,可以预处理得到。
CF2046F1 Yandex Cuneiform (Easy Version)
初始合法的串一定可以删空。
考虑一定能找到结构 Y...ADXB...。
若 A!=B:删除 Y...DX 即可。
若 A=B:那么 Y...YDXYC,考虑 C 一定不是 Y,删除 DXY 即可。
有一些挨着边界的情况。
浙公网安备 33010602011771号