\(\mathscr{A}\sim\) 移除石子
Tags:「A.构造」「C.细节」
"显然" 直接按 \((x,y)\) 二元组排序后两两组成正方形! 喜提 \(90\text{pt}\).
实际上. 还有一些多但是不复杂的情况讨论, 这里不提. 不过还是可以排一遍序 \(\mathcal O(n\log n)\) 构造的.
\(\mathscr{B}\sim\) 抓内鬼
Tag:「A.构造」
先求出最短路 DAG. 我们其实并不需要去求最小割之类的东西, 因为我们能切掉的边已然是 \(\mathcal O(n)\) 级别. 再结合部分分可以发现, 我们可以直接堵住 \(1\) 的部分有效出边和 \(n\) 的部分有效入边. 即, 用一种颜色染 \(1\) 及其若干可以作为最短路转移边的边, 用另一种颜色染 \(n\) 和此时仍然能作为最短路转移边的边. 可以证明, 除了样例 2 的情况必然有解. 复杂度为最短路的 \(\mathcal O(m\log m)\).
\(\mathscr{C}\sim\) 异或序列
Tags:「A.DP-计数 DP」「C.性质/结论」
分析一下序列的性质, 发现若 \([x,y,z]\) 非法, 则 \(y,z\) 最高 bit 相同, 高于 \(x\) 的最高 bit, 且 \(x\) 的最高 bit \(\in z\). 因此令 \(f(i)\) 表示结尾为 \(i\) 的序列数量, 枚举 \(z=1..n\), 用总方案减去非法 \(x\) 的方案即可. 用桶村 \(x\) 的最高 bit 贡献可以做到 \(\mathcal O(n)\), 由于从 \(z=1\to z=n\) 的 bit 变化次数和为 \(\mathcal O(n)\), 所以也可以递推做到 \(\mathcal O(n)\).
有个 shaber 非要沿用初步讨论中的按最高 bit 转移, 写了个 FWT 优化 DP, 啊对, 确实是 \(\mathcal O(n\log n)\), 你还不能说她 shaber. 但是她前面都写对了最后让所有点向后随便跳的时候转移错了, 换成了暴力都还没看出错, 这才是纯纯的 shaber.