构造小结
构造题训一道不会一道。
先从萌萌题做起。
CF1817B Fish Graph
数据范围只有 \(2000\)。
考虑枚举度数大于等于 \(4\) 的点 \(u\),然后搜索点 \(u\) 是否在一个环上,设 \(zu_i\) 为点 \(i\) 的祖先(即点 \(i\) 可以通往 点 \(u\) 的哪个邻结点),暴力 \(\tt{bfs}\) 并记录前驱即可,时间复杂度 \(O(nm)\)。
跑点双可以做到 \(O(n)\)。
CF1809D Binary String Sorting
两个操作代价差很小,考虑让操作次数最小化。
考虑枚举一个断点,将左边全部变成 \(0\),右边全部变成 \(1\),全部使用删除,接着再考虑交换操作的贡献,显然当交界处左边为 \(1\),右边为 \(0\) 时交换比删除更优。
记录前后缀和即可。
CF1776F Train Splitting
诈骗题。
我们发现 \(k\) 越大越不好构造,所以选取一个点 \(u\),将与点 \(u\) 相连的边染为颜色 \(1\),其他边染成颜色 \(1\) 即可,注意点 \(u\) 的度数为 \(n-1\) 时,再将颜色 \(2\) 中的随便一条边染成颜色 \(3\)。
一开始不知道生成子图是什么,谔谔。
CF1773A Amazing Trick
我不会的题。
ARC089E GraphXY
妙妙题。
不是很好想,但是摸几下还是摸得出来,显然路径上取的边权除了 \(0\) \(\sim\) \(100\) 以外只有 \(x\) 和 \(y\),考虑从 \(x\) 和 \(y\) 的角度解题。设 \(S\) 为编号最小的点,\(T\) 为编号最大的点,从 \(S\) 到 \(T\) 构造两条链,其中一条的边权由 \(x\) 组成,另一条由 \(y\) 组成。考虑在 \(x\) 链上的正数第 \(i\) 个点和 \(y\) 链上的倒数第 \(j\) 个点相连,设边权为 \(dp_{i,j}\)。因为 \(dis(S,T)=d_{x,y}\),所以 \(d_{x,y}=\min{(dp_{i,j}+i \times x+j \times y)}\),移项得 \(dp_{i,j}=\max{(d_{x,y}-i \times x-j \times y)}\),记得最后比较 \(dp\) 和 \(d\),判断无解,设构造出的图点数为 \(n\),时间复杂度 \(O(nAB)\)。
注意枚举顺序。

浙公网安备 33010602011771号