不会构造怎么办。。。
那多练了也还是菜呢。
真的,就看着题单里的题一道一道减少,但是看到新的套路还是不会做。完全想不到。
这种绝望感大概只有构造才能带来罢。
开个天坑。
图论相关
DFS 树性质:没有横叉边,只有返祖边。
CF1325F Ehab's Last Theorem
难度: \(\color{blue}{\text{Easy}}\)
直接建 DFS 树,此时形成最长的环一定是一段树边和一条返祖边。如果存在长度 \(\geq \lceil\sqrt n \rceil\) 的返祖边直接构建环。
否则构造独立集,此时如果选了 \(x\),再选 \(x\) 的 \(\lceil \sqrt n\rceil\) 级祖先一定是可行的。
记 \(dist_i\) 为 \(i\) 的距离(和左偏树定义一样),取 \(dist_i\equiv 0 (\bmod \lceil \sqrt n\rceil)\) 的点即为答案,正确性感性理解。
CF1391E Pairs of Pairs
难度: \(\color{blue}{\text{Easy}}\)
若 DFS 树深度 \(\geq \lceil \frac n 2\rceil\) 直接输出最长根链,否则把相同深度的点尽量两两匹配。
因为此时每层最多只会浪费一个点,所以浪费的点数总数不超过 \(\lfloor\frac n 2\rfloor\)。
思路:想到的是直径。。根本没有往深度上想,想的是点对不能是祖先后代关系,想在 LCA 处合并(好像也能做?)。
CF1439B Graph Subset Problem
难度: \(\color{purple}{\text{Medium}}\)
一开始肯定把 \(deg\leq K-1\) 的点全删了。如果 \(\frac {k(k-1)}2>m\) 则独立集不成立,否则尝试构造独立集:对于所有 \(deg=K-1\) 的点暴力枚举相邻点 chk 是否合法。
如果独立集构造失败则删去所有 \(deg=k-1\) 的点,如果还有剩余的点则为子集。否则无解。
思路:想到了 \(k\) 太大了没有独立集,想到了删点,想到了子集如何构造,想到了保留 \(deg\geq K-1\) 的点但是没想到如何搞独立集。太暴力了。。
复杂度的话因为 \(k\leq \sqrt m\),所以复杂度为 \(\mathcal O(m\sqrt m \log m)\)。
CF1270G Subset with Zero Sum
难度: \(\color{red}{\text{Hard}}\)
连单向边 \((i,i-a_i)\),找环,环上节点即为答案。因为环的总权值之和为 \(\sum i=\sum i-a_i\),所以 \(\sum a_i=0\)。
震撼。完全想不到。做出来的原因是一天早上我在打盹然后 modinte 在和 HMSF 讨论这道题无意间记住了做法/wul/wul。
一眼看上去肯定想的是背包之类的,应该能做到 \(\mathcal O(\frac {n^2} w)\)。这样没有用特殊的值域范围。
感觉本质还是加强了限制:强制选了 \(i\) 之后选 \(i-a_i\)。至于如何想到建图?可能是因为值域两侧端点都和 \(i\) 有关,移移项能出来一个 \(1\leq i-a_i\leq n\)?(自欺欺人 ing)。
CF1515F Phoenix and Earthquake
难度: \(\color{purple}{\text{Medium}}\)。
结论:若有解(\(\sum a_i\geq (n-1)k\)),则任意生成树都有解。
归纳证明,对于一个叶子 \(i\),如果 \(a_i\geq k\) 则直接和父节点合并,则不等式左右都 \(-k\)。否则考虑删去这个叶子,剩余部分不等式左边减去了 \(a_i\) 右边减去 \(x\) 仍然成立,最后在把叶子和父节点合并到一起。做法和证明方式一样。
思路:很妙啊,通过链等特殊情况猜到了结论,但是不会证导致不会做。想法是不断取边权最大的边然后删去,如何用神秘数据结构优化,但是好像挺难做的。
P7320 「PMOI-4」可怜的团主
难度: \(\color{blue}{\text{Easy}}\)。
哈哈。
dfs 树直接取叶子,足够就直接当做独立集。否则构造路径,按照 dfs 序排序(其实正常写法应该找到的就是有序的)然后 \(i\) 和 \(i+\frac m 2\) 配对。注意细节问题,如 \(1\) 可以当叶子等等。
思路:???。
CF1610F Mashtali: a Space Oddysey
难度: \(\color{red}{\text{Hard}}\)。
一个点总度数如果是偶数一定不合法。奇数点一定都能有贡献。
如果存在边 \((x,y)\) 和边 \((y,z)\),则都删去后加入 \((x,z)\) 是等价的。(?)
思路:打表发现结论,没想到缩边,在想把度数偶数的点删掉然后每个点合法的值是一段连续的值域区间奇或偶或者中间挖一个啥的。感觉思路完全不对啊。。应该换个思路的。。。
CF1019C Sergey's problem
难度: \(\color{red}{\text{Hard}}\)。
归纳。假定选择了一个点 \(x\),把它一步能走到的点全部删掉,接下来若新图的答案集合为 \(S\),如果 \(S\) 和 \(x\) 有公共边,则不选 \(x\)。因为 \(x\) 能一步走到的点 \(S\) 走两步一定也能走到。
正着扫一遍,如果该点未被覆盖,则选择该点并把该点能到的点都覆盖上。然后倒着扫一遍,如果选择了当前点,则强制它能到达的点都不选。正确性显然。
思路:啊啊啊啊啊啊啊啊怎么办啊啊啊啊啊不会啊啊啊啊啊崩溃了啊啊啊啊啊啊啊啊啊构造是什么啊啊啊啊啊啊啊啊
把“能走两步”转成“能走一步”直接想感觉很难想到。但是进行归纳有一定的提示作用。构造题还是主动归纳比较好。。。。。
一直在想一些 DAG 之类的平凡情况。。还有救吗。。。。真的不会。。。想不到。啊。。