题解:P3109 [USACO14OPEN] Code Breaking G
_2022gdgzby01 · · 题解
考虑容斥,枚举哪些串必然出现,那么贡献为
设
将子树的 DP 值与父亲合并时,按串长分类讨论:
若子树串比较长,那么暴力枚举它的前缀状态转移即可。
若父亲串比较长,那么一个子树状态对父亲状态的贡献编码后对应一个区间。
扫描线处理区间,对于相邻的区间内的所有 DP 值整体乘上一个数,线段树维护。
最后沿着线段树上有效节点走,即可不重不漏地得到所有新的状态。
时间复杂度
_2022gdgzby01 · · 题解
考虑容斥,枚举哪些串必然出现,那么贡献为
设
将子树的 DP 值与父亲合并时,按串长分类讨论:
若子树串比较长,那么暴力枚举它的前缀状态转移即可。
若父亲串比较长,那么一个子树状态对父亲状态的贡献编码后对应一个区间。
扫描线处理区间,对于相邻的区间内的所有 DP 值整体乘上一个数,线段树维护。
最后沿着线段树上有效节点走,即可不重不漏地得到所有新的状态。
时间复杂度