#P3501. 反对称(Antisymmetry)

0
    ID: 8518 传统题 1000ms 128MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>P3501Manacher 算法Manacher字符串哈希二分CSP-S

反对称(Antisymmetry)

反对称(Antisymmetry)

题目描述

对于一个 0/10/1 字符串,如果将这个字符串 00 和 11 取反后,再将整个串反过来和原串一样,就称作「反对称」字符串。比如 0000111100001111 和 010101010101 就是反对称的,而 10011001 就不是。
现在给出一个长度为 nn 的 0/10/1 字符串,求它有多少个子串是反对称的,注意这里相同的子串出现在不同的位置会被重复计算。

输入格式

第一行一个正整数 nn 。
第二行一个长度为 nn 的 0/10/1 字符串。

输出格式

一行一个整数,表示原串的反对称子串个数。

样例输入 #1

8
11001011

样例输出 #1

7

数据范围

样例的 77 个反对称子串分别是:0101(出现两次),1010(出现两次),01010101,11001100 和 001011001011。

对于 100%100\% 的数据, 1≤n≤500 0001\le n\le 500\ 000 。

知识点与难度

本题涉及的知识点从属于 CSP-S,难度(CF Rating):1850。


测试点分布

Subtask 分值 测试点编号 说明
0 10 1 样例
1 20 2~7 小规模 n≤2000 / 特殊: n=1输出0 / 特殊: 全0串输出0 / 特殊: 完整0^k1^k反对称串
2 8~13 中等规模 n≤50000 / Hack: 010101...周期交替串使答案超过int上限检验64位整数
3 25 14~19 大规模 n=300000 多段嵌套反对称块修改版Manacher测试
4 20~25 满规模 n=500000 极限周期交替与Thue-Morse构造综合压力测试

出处:原题链接