http://www.lydsy.com/JudgeOnline/problem.php?id=2084

题意:一个01串,求满足字符串0和1取反后,再将整个串反过来和原串一样的子串数目。(n<=500000)

#include <bits/stdc++.h>
using namespace std;
const int N=500005;
long long ans;
int len[N<<1], n;
char s[N<<1];
int main() {
scanf("%d%s", &n, s+1);
for(int i=n; i; --i) s[i<<1]=s[i], s[i<<1|1]='#';
n=n<<1|1; s[1]='#';
int cur=1;
for(int i=2; i<=n; ++i) {
int &now=len[i];
now=min(len[(cur<<1)-i], max(0, cur+len[cur]-i));
if(i&1) {
while(i-now-1>=1 && i+now+1<=n && (s[i-now-1]=='#' || s[i-now-1]!=s[i+now+1])) ++now;
ans+=now;
}
if(cur+len[cur]<i+now) cur=i;
}
printf("%lld\n", ans>>1ll);
return 0;
}

  

发现就是0和1看做相等的回文串= =

妈呀发现在做manacher的时候有各种坑爹情况= =

首先要注意只能插入的特殊字符才能拓展= =否则如果是0或1拓展的话会出现莫名的问题= =(因为当0!=1的时候可能会造成类似这种

4
1001

答案应该是2

= =因为你会发现当'#'拓展后得到的长度,对于'0'或'1'在这个长度内不一定满足回文性= =

最新文章

  1. Windows Store App JavaScript 开发:选取文件和文件夹
  2. web.config连接字符串的一些总结
  3. CKEditor使用配置方法
  4. opencv6.2-imgproc图像处理模块之图像尺寸上的操作及阈值
  5. 在浏览器中输入URL后执行的全部过程的个人总结
  6. 取客户的银行帐号SQL
  7. Discuz! X2头部header.htm修改指南
  8. SQL 将一列多行数据合并为一行 FOR XML PATH
  9. 《C#高级编程》之泛型--1创建泛型类
  10. Windows Azure存储容器私有,公共容器,公共Blob的区别
  11. JS对select动态添加options操作[IE&amp;FireFox兼容]
  12. #pragma warning (default : n)
  13. Android和Java的轻巧Wire协议缓冲器
  14. 小心DriveInfo类IsReady属性的较大延迟问题
  15. nRF Toolbox 1.2 使用AKII的实现,而Becon始终不好使
  16. Fckeditor用法
  17. 关于”铁大吃什么“的nabcd的分析
  18. ASP入门(八)-Request对象
  19. CF938G Shortest Path Queries
  20. 第33次Scrum会议(11/21)【欢迎来怼】

热门文章

  1. linux后台运行和关闭、查看后台任务
  2. 【翻译三】java-并发之线程对象和实现
  3. JAVA和PYTHON同时实现AES的加密解密操作---且生成的BASE62编码一致
  4. 查看MYSQL中数据表占用的空间
  5. Ajax 数据库操作
  6. AngularJS——依赖注入
  7. AspectFill VS. AspectFit
  8. &lt;转&gt;删除文件夹下所有的.svn文件
  9. WPF MVVM模式下实现ListView下拉显示更多内容
  10. 2016北京网络赛 hihocoder 1391 Countries 树状数组