Problem A
DP,输出路径的时候减下去就可以了。
Problem B
如果一个点度数 $<= 2$,那么这个点肯定会被删掉。
考虑每个度数 $>= 3$的点为根并且不选这个根的情形,假设这个点有$sz$个儿子。
如果我在$sz$个分支里面只有 $<= 2$个分支里面的点被选择了。
那么首先其他子树肯定会被删光,然后剩下这两个子树。
到最后这个点肯定会被删除(纸上画一下很明白的)
所以这个点对答案的贡献为
$all - $只选一个子树里面的点方案数 - 只选两个子树里面的点的方案数
那么枚举哪两个子树被选定再减去就可以了。
但是这个减的过程,每个只选一个子树里面的点方案数都被重复减去了$sz - 1$次
所以得加回来。
然后答案还得减去只选一个子树里面的点方案数。
所以加回来的时候加上$sz - 2$倍的只选一个子树里面的点方案数就可以了。
Problem C
$splay$一波带走,$rope$应该也行。
Problem D
先解密下,把真正要处理的两个字符串弄出来。
然后这个其实相当于求字符串匹配的变种。
如果两个字符串(长度相等)能够匹配,
那么必须满足
$(a_{i} - a_{j})^{2} * ((a_{i} - a_{j})^{2} - 1) = 0$
$(a_{i} - a_{j})^{4} - (a_{i} - a_{j})^{2} = 0$
$a_{i}^{4} - 4a_{i}^{3}b_{i} + 6a_{i}^{2}b_{i}^{2} - 4a_{i}b_{i}^{3} + b_{i}^{4} - a_{i}^{2} + 2a_{i}b_{i} - b_{i}^{2} = 0$
那么做$4$次NTT再把剩下的一些无需卷积求的项加起来就可以了。
如果结果等于$0$那么这个位置就可以匹配。
Problem E
直接哈希一波带走
Problem F
Problem G
令$f(x)$表示距离最小距离至少为$x$的方案数,那么答案为$f(x) - f(x + 1)$
考虑一条链的情况,如果一个点跟前面$x$个颜色都不能相同,
那么这个点的选择有$all - x$种。
然后树上的情况其实也差不多,那么用广度优先搜索标记类比链上染色的过程,
然后判断有多少个点不能跟当前点颜色重复即可。
时间复杂度$O(n^2)$
Problem H
Problem I
Problem J