1 条题解
-
0
混乱合并 题解
思路
令 表示以 结尾的混乱非空子串数量, 同理。它们分别是对应位置的最长相邻不同后缀长度。
令 表示已经使用两个非空子串、横纵端点为 ,且最后一个字符取自 的合并数; 类似。追加 时,前一字符可能是 或 ,并需与 不同;若这是第一个来自 的字符,则此前可取任意以 结尾的混乱子串,共 种。另一方向对称。
做法
子任务 1 枚举两子串和所有二进制合并序列,直接检查结果串。
子任务 2 固定两个子串左端点,在后缀网格上做动态规划并累加所有右端点,复杂度 。
满分算法把所有左端点的贡献合并进 和上述二维状态,每个网格点只转移常数次。
正确性证明
任一合法合并的最后一步唯一地取自 或 。若最后取自 ,删去它后,要么仍是已经使用两串且末尾为 或 的合法合并,要么尚未使用 、只是一段以 结尾的混乱子串。转移按末尾字符不同的必要充分条件加入这些且仅这些方案; 方向同理。因此每个合法合并按唯一末步被计数一次,累加所有端点得到题目所求。
复杂度
时间复杂度 ,空间复杂度 。
- 1
信息
- ID
- 1277
- 时间
- 2000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 0
- 上传者