摘要: 题意:树上每个点都有颜色,称一个颜色占领一棵子树,当且仅当没有别的颜色在这棵子树内的数量比它多。求所有子树的占领颜色之和。题解:最显然的是DFS序+主席树或莫队,这里使用Dsu on tree。 每次暴力DFS之后,只撤销除重儿子之外的点的贡献。由于重儿子的性质,均摊后复杂度为$O(n\log n) 阅读全文
posted @ 2018-08-08 18:22 HocRiser 阅读(404) 评论(0) 推荐(0)
摘要: 求和式的前两项可以直接算,问题是对于每对i,j计算LCP。 一个比较显然的性质是,LCP(i,j)是h[rk[i]+1~rk[j]]中的最小值。 从h的每个元素角度考虑,就是对每个h计算有多少对i,j以它为最小值。 在h中使用单调栈统计左右比它小的第一个元素,相乘得到结果。 阅读全文
posted @ 2018-08-08 10:32 HocRiser 阅读(199) 评论(0) 推荐(0)
摘要: 差分之后就是求多串LCS。 对其中一个串建SAM,然后把其它串放在上面跑。 对SAM上的每个状态都用f[x]记录这个状态与当前串的最长匹配长度,res[x]是对每次的f[x]取最小值。答案就是res[]的最大值。 考虑f[x]的求法,把s[]放在SAM上跑时,若下一个能正常匹配(即son[x][c] 阅读全文
posted @ 2018-08-08 10:07 HocRiser 阅读(236) 评论(0) 推荐(0)