2084: [Poi2010]Antisymmetry

Time Limit: 10 Sec  Memory Limit: 259 MB
Submit: 609  Solved: 387
[Submit][Status][Discuss]

Description

对于一个01字符串,如果将这个字符串0和1取反后,再将整个串反过来和原串一样,就称作“反对称”字符串。比如00001111和010101就是反对称的,1001就不是。
现在给出一个长度为N的01字符串,求它有多少个子串是反对称的。

Input

第一行一个正整数N (N <= 500,000)。第二行一个长度为N的01字符串。

Output

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


重新定义一个相等:(a=='#'&&b=='#')||((a^b)==1) 然后就是裸题啊

注意:

显然答案反对称只可能长度为偶数,这个地方r[i]=i<p?min(p-i+1,r[2*a-i]):0要用0!!!因为如果i是1的话它本身就不能成为回文串,所以用0然后回文扩展的时候会判断cmp(s[i],s[i])

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=1e6+;
typedef long long ll;
int n;
char s[N],a[N];
int r[N];
void iniStr(char s[]){
for(int i=;i<=n;i++)
a[(i<<)-]='#',a[i<<]=s[i]-'';
a[(n<<)+]='#';
a[]='@';a[(n<<)+]='$';
}
ll ans;
inline bool cmp(char a,char b){
return (a=='#'&&b=='#')||((a^b)==);
}
void Manacher(char s[],int n){
int p=,a;
for(int i=;i<=n;i++){
r[i]=i<p?min(p-i+,r[*a-i]):;
while(cmp(s[i-r[i]],s[i+r[i]])) r[i]++;
if(i+r[i]->p) p=i+r[i]-,a=i;
ans+=r[i]>>;
//printf("r %d %d\n",i,r[i]);
}
}
int main(){
freopen("in","r",stdin);
scanf("%d",&n);
scanf("%s",s+);
iniStr(s);
Manacher(a,n<<|);
printf("%lld",ans);
}

最新文章

  1. Fiery Youth
  2. mac下使用gcc
  3. while做法1.兔子生兔子 2.求100以内质数的和3.洗发水15元 牙膏5元 香皂2元 150元的算法
  4. (转)LAMPer技能树
  5. Revert R12.1.3 Homepage Layout to Link Style as in R12.1.1 or 11i
  6. IOS内测分发策略
  7. YSPASYS 中小型企业简单员工评价考核系统
  8. eclipse中mavean的使用配置
  9. maven 简单实用教程
  10. 使用接口的方式调用远程服务 ------ 利用动态调用服务,实现.net下类似Dubbo的玩法。
  11. Machine Learning——Supervised Learning(机器学习之监督学习)
  12. xss防御
  13. [BZOJ1070] [SCOI2007] 修车 (费用流 &amp; 动态加边)
  14. XMPP系列(七)---获取群组列表
  15. 【Matlab编程】Matlab高效编程技巧
  16. 通过spark sql 将 hdfs上文件导入到mongodb
  17. Odoo中连接mysql数据库
  18. 视觉显著性检测(Visual saliency detection)相关概念
  19. Altium Designer PCB的时候 高亮显示引脚连线
  20. .Net 环境

热门文章

  1. eclipse(Version: Mars.2 Release (4.5.2)) groovy plugin install process.
  2. JQeury添加和删除class内部实现代码(简化版)
  3. 程序员是这样区分Null和Undefined
  4. Content Provider Test过程中遇到的坑
  5. thinkphp开发微信公众号时,验证基本配置提示请求url超时
  6. Vuejs实例-00Vuejs2.0全家桶结合ELementUI制作后台管理系统
  7. Shell中$X的含义
  8. window安装swagger editor
  9. python3 第二章 - 第一个程序
  10. SSM与jsp传递实体类