ZJOI2020 传统艺能

Posted frame233

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZJOI2020 传统艺能相关的知识,希望对你有一定的参考价值。

考场上最后1h才会,成功没写完。

先考虑个暴力,(f_{i,j}) 表示 (i) 次操作后 (tag_j=1) 的方案数,(g_{i,j}) 表示 (i) 次操作后 (j) 号点到根的路径上的点 tag都是0 的方案数。
定义终点,途径点,终点子树(不含终点),途径点儿子(不含途径点),途径点儿子子树(不含途径点,途径点儿子)为字面意思。
(G=g_{i-1,j},F=f_{i-1,j},g=g_{i-1,j},f=f_{i-1,j},mul=(frac{(n+1)*n}{2})^{i-1})
对于每种可能的操作,有如下转移:
对于终点,(f+=mul)
对于途径点,(g+=mul)
对于终点子树,(f+=F)
对于途径点儿子,(f+=mul-G,g+=G)
对于途径点儿子子树,(f+=F,g+=G)

发现每个点独立,k很大,考虑对每个点做矩阵快速幂。
设终点,途径点,终点子树,途径点儿子,途径点儿子子树数量分别为(c1,c2,c3,c4,c5)

[egin{bmatrix} f & g & mul end{bmatrix} = egin{bmatrix} F & G & mul‘ end{bmatrix} imes egin{bmatrix} (c3+c5) & 0 & 0 -c4 & c4+c5 & 0 c1+c4 & c2 & frac{(n+1)*n}{2} end{bmatrix} ]

如果求出了c*,答案可在 (O(3^3nlogk)) 内求出。
求c*实际上只需求出c1,c2。
可以通过某个线段树上经典结论在 (O(n)) 内求出(这过几天再补做法)

代码












以上是关于ZJOI2020 传统艺能的主要内容,如果未能解决你的问题,请参考以下文章

Luogu P6633 [ZJOI2020] 抽卡

ZJOI2020训练题2

loj 3311「ZJOI2020」字符串 - 平方串

BZOJ 3924[Zjoi2015]幻想乡战略游戏

zjoi[ZJOI2018]胖

「ZJOI2022」面条