2018 牛客多校 3

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

如果子串和为$0$那么返回$0$,是$15$的倍数(大于$0$)则返回$15$。

否则返回对$15$取模的余数

搞出那个结论之后就是线段树的常规操作。

时间复杂度$O(nlogn * 16 * 16)$

(如果没有更新复杂度应该可以减少一个$16$?)

 

Problem G

令$f(x)$表示距离最小距离至少为$x$的方案数,那么答案为$f(x) - f(x + 1)$

考虑一条链的情况,如果一个点跟前面$x$个颜色都不能相同,

那么这个点的选择有$all - x$种。

然后树上的情况其实也差不多,那么用广度优先搜索标记类比链上染色的过程,

然后判断有多少个点不能跟当前点颜色重复即可。

时间复杂度$O(n^2)$

 

Problem H

签到题吧

 

Problem I

 

Problem J

 

posted @ 2018-07-29 14:58  cxhscst2  阅读(145)  评论(0编辑  收藏  举报