codeforces 1553D

链接

一个与标答不同的想法

首先,根据观察可知:如果我们从前往后匹配,当前匹配上了 s s s 的第 i i i个字符,那么下一个能匹配的一定是与当前位置 i i i的奇偶性不同的位置。
然后我们就分奇偶建立序列自动机,然后从头开始时枚举是从奇数位置开始还是偶数位置。然后按一般的序列自动机匹配方式双指针扫就可以了。
普遍的坑点(fst点)在于即使匹配上了, s s s剩下的字符个数也需要是偶数个,否则就不行(末尾字符都要删)。

然后是这种做法的正确性证明:
考虑两个奇偶性相同且字符相同的位置 i , j ( i < j ) : j 所 能 跳 转 的 位 置 , i 都 能 跳 转 , 显 然 选 择 i 更 优 。 i,j(i<j):j所能跳转的位置,i都能跳转,显然选择i更优。 iji<jjii

有 关 结 尾 时 判 断 s 剩 余 字 符 的 问 题 : 有关结尾时判断s剩余字符的问题: s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值