Heoi好题分享
He(ngEr)oi 好题分享
怎么每次 NT 都找黑啊/jk
P5362
NT 的
关注 @Nt_Yester 谢谢喵
对于 \(\textbf{T.M.}\) 的序列除了题里那个鬼畜定义还有几种生成方式:
- 初始令 \(T_0 = 0\),然后每次将原串按位取反拼接到原串后。
- \(T_i = \operatorname{popcount}(i) \bmod 2\)。
- 初始令 \(T_0 = 0\),然后每次令 \(0 \to 01, 1\to 10\)。
对于本题采用第三种,因为注意到第三种是可逆的(\(01 \to 0, 10 \to 1\))。
并且题解说对于长度大于 \(3\) 的串,逆操作能得到的合法串是唯一的。
所以直接记搜。
每次把串分别从 \(S_0\) 和 \(S_1\) 开始相邻两个划分,如果划分出的两个数相同那么划分方案是非法的。
如果两侧有单个字符其实也是确定的。
缩减完后的串长应该是 \(\lceil len / 2\rceil\),所以 \(k\) 如果不用补前面的 \(S\) (即 \(S\) 最后两位刚好划分成一组)应该也是缩到 \(\lceil k/2\rceil\),不然就是 \(\lceil (k - 1) / 2 \rceil\)。
P8024
我的
不关注 @KinNa_Sky 谢谢喵
AT_agc002_e
yyzz 的
关注 @鳶一折紙 谢谢喵
24.11.17
让我们祝 TA 生日快乐!
好古早的题/jk
从大到小排序,那么操作就变成了吃下面一行或吃左面一列。
或者也可以看成从左下角只能向右或向上走格子,走到边界的人输。
令 \(f(x, y)\) 表示 \((x, y)\) 点先手胜负。那么有 \(f(x, y) = f(x + 1, y + 1)\)。
证明:
如果 \(f(x + 1, y + 1) = 0\),那么 \(f(x + 1, y) = 1, f(x, y + 1) = 1 \Rightarrow f(x, y) = 1\)。
10 01 ^ (x, y)
如果 \(f(x + 1, y + 1) = 1\),
假设 \(f(x, y) = 0\),那么 \(f(x + 1, y) = 1, f(x, y + 1) = 1\),因为 \(f(x + 1, y + 1) = 1\) 所以 \(f(x + 2, y) = 0, f(x, y + 2) = 0\),\(\Rightarrow f(x + 2, y + 1) = 1, f(x + 1, y + 2) = 1\),矛盾01 111 010 ^ (x, y)
所以 \(f(x + 1, y + 1) = 1 \Rightarrow f(x, y) = 1\)
所以求从原点往右上角走到不能走,求这个点的胜负就好了,这个点只能往左或往上,直接求向左和向上的步数奇偶性判断,有一条路能赢就赢了。
CF1313D
PC 的
关注 @ZepX_D 谢谢喵
我是唐诗
如果一个孩子得到的糖果量是偶数(可能为零),那么他(或她)会很伤心。不过,其他孩子(收到奇数个糖果的孩子)会很高兴。
KinNa:所以必须要有一个孩子得到的糖果量是偶数是吗。
不是
关键性质 \(k \le 8\)。不难(?)想到状压。
然后由于每个点至多被 \(k\) 条线段覆盖,可以从左到右扫一遍,给每条线段分配一个当前空闲的新编号(\(0 \sim k\))用来状压。
P5008
苗姐的
关注 @TR__ 谢谢喵
首先不难想到如果图是一张 DAG,那么按照逆拓扑序能删掉任意有入度的点。
其次大胆猜测,对于一个强连通分量,最多一个点不能删。
考虑随便拿一个点出来作为起点 bfs,那么总能遍历所有点,按照逆 bfs 序总能删去任意点。另外,如果选的这个点有来自强连通分量外的入度,那么这个点也可删。
所以对原图缩点后有入度的强连通分量内部的点都可删,没有入度的强连通分量有一个点(自己选)不可删。
特别的,如果没有入度的强连通分量含有有自环的点,那么所有点都可删。
贪心的让权值最小的点不可删,然后取所有可删的点前 \(k\) 大就好。
闲话
有人学 Tarjan 求点双问:所以它搜的时候不能算父亲是吗。
KinNa:是的,不能用它和父亲直接连的边(更新 low
),但是子节点搜到它父亲更新是没问题的。
某:所以里面没有环是吗?
KinNa:?环都没有求什么点双?