【做题记录】万径人踪灭
-
万径人踪灭
- 算法:
题目:
在一个只包含 的字符串中选择一个序列,使得
-
位置和字符都关于某条对称轴对称。
-
不能是连续的一段。
求有多少个满足要求的序列,答案对 取模。
题解:
upd:修改了部分内容。
首先枚举对称轴,假设我们以 为对称轴。
设 为满足 并且 关于 对称的 的个数。
那么对于这 个 , 与 要么同时选(因为对称所以必定满足),要么同时不选,共 种方案。扣掉空集,共 种。
注意一下这里 可以为 ,因为对称轴可以为两个字符中间(比如 就关于 对称,也就是 的中间对称)
这里有个关于位置对称的性质:
关于 对称当且仅当 。
我们可以根据这个转移。
现在位置对称了,还要满足字符对称。
记字符 为 ,字符 为 。
那么可以发现当两字符相等时仅可能为 或 。而对于 的情况则需要排除。
由于 和 的情况的数值中间相差了 ,难以判断是否对称。
这里有个很好用的东西:平方。
平方可以消去数值的负号。
所以我们可以将 所代表的数值各消去 ,那么变为 ;此时再将它们都平方,那么对称的即变为 ,不对称的还是 ,很好地满足了我们的要求。
非常显然的卷积, 一卷即可。
但题目中还说“位置不能连续”,说明要扣掉连续的回文子串的个数。
对于回文的对称的子串显然,用 manacher 一弄就好了。
本文作者:trsins
本文链接:https://www.cnblogs.com/trsins/p/15776609.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步