hdu5081】的更多相关文章

题意有点绕,不过读懂了之后并不难 以Si结尾容易想到ac自动机,建好ac自动机并将fail指针反向即可得到一棵树 那么操作1就是将若干个子树的并中的节点全部权值+1 操作2就是将求若干个节点到根的路径的并中的节点的权值和 操作1不难用dfs序将子树并转化为区间并然后线段树区间加 操作2呢,我们进行树链剖分,对于每条重链,在重链头记录一下这条重链之前询问到哪个位置了 因为每个点到根的路径都是若干重链的若干前缀,这样问题就解决了 #include<bits/stdc++.h> using name…