ANT-Antisymmetry
题目
对于一个01字符串,如果将这个字符串0和1取反后,再将整个串反过来和原串一样,就称作“反对称”字符串。比如00001111和010101就是反对称的,1001就不是。
现在给出一个长度为N的01字符串,求它有多少个子串是反对称的。
输入
第一行n
第二行n个01字符串
输出
它有多少个子串是反对称的
输入样例
8
11001011
输出样例
7
解题思路
其实这道题就是一道哈希加二分,推出来可以得出反过来的01串加上原本的可以发现是一个回文,那么就很好解决了。枚举中心,不断的看k格,然后就哈希看是否为回文即可.
程序如下
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#define ll long long
const ll math=2000001001;
using namespace std;
int n,j,l,r,mid,maxn;
ll hx[500001],re[500001],hxx[500001],ans;
char a[500001];
bool check(int l,int r,

博客介绍了如何利用哈希和二分法解决一种特殊类型的字符串问题——找到反对称字符串的子串。通过对给定长度为N的01字符串进行分析,博主提出当字符串及其反转取反后的串相同时,该字符串为反对称。通过枚举中心并检查子串是否为回文,结合哈希技术高效地找出所有反对称子串的数量。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



