BZOJ2084:[POI2010]Antisymmetry
2024-08-25 07:59:16
浅谈\(Manacher\):https://www.cnblogs.com/AKMer/p/10431603.html
题目传送门:https://lydsy.com/JudgeOnline/problem.php?id=2084
题目求的就是偶数长度回文串个数。不过匹配从相等变成了异或等于\(1\),在\(Manacher\)算法上稍作改进即可。
时间复杂度:\(O(n)\)
空间复杂度:\(O(n)\)
代码如下:
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn=1e6+5;
int n,ans;
int p[maxn];
char s[maxn];
int read() {
int x=0,f=1;char ch=getchar();
for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;
for(;ch>='0'&&ch<='9';ch=getchar())x=x*10+ch-'0';
return x*f;
}
int main() {
n=read(),scanf("%s",s+1);
for(int i=n;i;i--)
s[i<<1]=s[i],s[(i<<1)-1]='#';
s[0]='$',s[n<<1|1]='#',n=n<<1|1;
int id=0,mx=0;
for(int i=1;i<=n;i++) {
p[i]=i<=mx?min(mx-i+1,p[(id<<1)-i]):1;
while(s[i-p[i]]-'0'+s[i+p[i]]-'0'==1||s[i-p[i]]=='#')p[i]++;
if(s[i]=='#')ans+=(p[i]-1)/2;
}
printf("%d\n",ans);
return 0;
}
最新文章
- DWG2SHP DXF2SHP 如何把AutoCAD的DWG,DXF文件转换为Esri ArcGIS的Shape文件
- 读jQuery源码 - Deferred
- js格式化数字和金额
- Scala 中的函数式编程基础(三)
- 查看LINUX当前负载
- 分享Kali Linux 2016.2最新镜像201609
- 强调语气<;strong>;和<;em>;标签,文字设置单独样式<;span>;
- 【BZOJ2653】【主席树+二分】middle
- DHTML【6】--CSS
- javascript链式调用实现方式总结
- 服务器是R710常见错误汇总:
- JS对象或属性的不变性
- mysql初学,mysql修改,mysql查找,mysql删除,mysql基本命令
- qt中的tcp编程
- 网络服务器操作命令telnet
- Spring Security入门(2-3)Spring Security 的运行原理 4 - 自定义登录方法和页面
- Confluence 6 使用 JConsole 监控远程 Confluence
- BigDecimal最基础用法【转】
- 利用GDI+处理图像的色彩
- python 读取二进制数据到可变缓冲区中
热门文章
- nginx官网下载&;百度云分享
- Hibernate与JDBC、EJB、JDO的比较
- java.util.logging.Logger_01
- tensorflow conv2d的padding解释以及参数解释
- spring3: 对JDBC的支持 之 Spring提供的其它帮助 SimpleJdbcInsert/SimpleJdbcCall/SqlUpdate/JdbcTemplate 生成主键/批量处理
- urllib.urlretrieve远程下载
- 【spark】连接Hbase
- 【spark】RDD创建
- 服务器(Ubuntu 12.04 LTS)上编译基于OpenCV的项目遇到的问题及解决方案
- 《转》浅谈EJB