【[POI2010]ANT-Antisymmetry】
开始复习字符串了
第一步肯定得是\(hash\)
首先理性分析一波不可能出现长度为奇数的反回文串,对称轴位置取反之后肯定和原来不相等了
我们可以枚举所有回文串的对称中心,之后我们发现这个样子是具有单调性de
于是我们就利用\(hash\)来判断
将原来的串取反之后在反转,判断在对称中心左右两边二分的长度是否相等就可以啦
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#define re register
#define ull unsigned long long
#define maxn 500005
#define min(a,b) ((a)<(b)?(a):(b))
char S[maxn],T[maxn];
int a[maxn],b[maxn];
int n;
ull ha[maxn],sh[maxn];
ull pow[maxn];
ull base=17;
long long num;
inline ull get_hash(int l,int r,int op)
{
if(!op) return ha[r]-ha[l-1]*pow[r-l+1];
return sh[n-l+1]-sh[n-r]*pow[r-l+1];
}
int main()
{
scanf("%d",&n);
scanf("%s",S+1);
for(re int i=1;i<=n;i++)
if(S[i]=='0') a[i]=0;
else a[i]=1;
pow[0]=1;
for(re int i=1;i<=n;i++)
pow[i]=pow[i-1]*base;
for(re int i=1;i<=n;i++)
ha[i]=ha[i-1]*base+(a[i]+1);
for(re int i=1;i<=n;i++)
b[i]=a[n-i+1]^1;
for(re int i=1;i<=n;i++)
sh[i]=sh[i-1]*base+(b[i]+1);
for(re int i=1;i<n;i++)
{
int l=1,r=min(i,n-i);
int ans=0;
while(l<=r)
{
int mid=l+r>>1;
if(get_hash(i-mid+1,i,1)==get_hash(i+1,i+mid,0)) l=mid+1,ans=mid;
else r=mid-1;
}
num+=ans;
}
printf("%lld\n",num);
return 0;
}
/*
8
11001011
*/
【[POI2010]ANT-Antisymmetry】的更多相关文章
- AntZipUtils【基于Ant的Zip压缩解压缩工具类】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 Android 压缩解压zip文件一般分为两种方式: 基于JDK的Zip压缩工具类 该版本存在问题:压缩时如果目录或文件名含有中文, ...
- 【MyBatis学习笔记】
[MyBatis学习笔记]系列之预备篇一:ant的下载与安装 [MyBatis学习笔记]系列之预备篇二:ant入门示例 [MyBatis学习笔记]系列之一:MyBatis入门示例 [MyBatis学习 ...
- 【甘道夫】Win7x64环境下编译Apache Hadoop2.2.0的Eclipse小工具
目标: 编译Apache Hadoop2.2.0在win7x64环境下的Eclipse插件 环境: win7x64家庭普通版 eclipse-jee-kepler-SR1-win32-x86_64.z ...
- 【Android 应用开发】GitHub 优秀的 Android 开源项目
原文地址为http://www.trinea.cn/android/android-open-source-projects-view/,作者Trinea 主要介绍那些不错个性化的View,包括Lis ...
- 【转】基于Jenkins实现持续集成【持续更新中】
知识预览 持续集成 Jenkins安装 Jenkins插件 Jenkins配置 Jenkins备份与恢复 发布PHP项目 SVN 发布Maven项目 按版本发布 远程管理 War文件部署设置 任务 J ...
- 基于Jenkins实现持续集成【持续更新中】
持续集成 1.什么是持续集成:Continuous integration (CI)持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生 ...
- 【HDOJ3018】【一笔画问题】【欧拉回路+并查集】
http://acm.hdu.edu.cn/showproblem.php?pid=3018 Ant Trip Time Limit: 2000/1000 MS (Java/Others) Me ...
- 【Canvas真好玩】从黑客帝国开始
前言 笔者之前有一段时间一直在学习Canvas相关的技术知识点,通过参考网上的一些资料文章,学着利用简单的数学和物理知识点实现了一些比较有趣的动画效果,最近刚好翻看到以前的代码,所以这次将这些代码实践 ...
- 【模板整合计划】NB数论
[模板整合计划]NB数论 一:[质数] 1.[暴力判] 素数.コンテスト.素数 \(\text{[AT807]}\) #include<cstdio> #include<cmath& ...
- 【模板整合计划】图论—有向无环图 (DAG) 与树
[模板整合计划]图论-有向无环图 (DAG) 与树 一:[拓扑排序] 最大食物链计数 \(\text{[P4017]}\) #include<cstring> #include<cs ...
随机推荐
- WPF的MediaElement指定Source无法播放问题解决
最近学wpf,在使用 MediaElement 指定 Source 进行视频播放时,在源码界面可以正常显示,但运行时控件显示空白. 源码界面如下图:(可正常显示) 运行后如下图所示:(控件位置显示空白 ...
- CentOS 7重装mysql8.0.15
查看是否安装有mysql rpm -qa | grep mysql 有的话先删除干净 下载MySQL yum源 wget https://dev.mysql.com/get/mysql80-commu ...
- 撩课-Java每天5道面试题第25天
156.mvc:view-controller有什么作用? 当我们发送一个请求时,如果没有找到对应的mapping 则会对配置文件当中匹配mvc:view-controller 注意点:使用时要添加后 ...
- 全面了解HTTP和HTTPS
序言 Http和Https属于计算机网络范畴,但作为开发人员,不管是后台开发或是前台开发,都很有必要掌握它们. 在学习Http和Https的过程中,主要是参考了阮一峰老师的博客,讲的很全面,并且通俗易 ...
- 理解webpack4.splitChunks之cacheGroups
cacheGroups其实是splitChunks里面最核心的配置,一开始我还认为cacheGroups是可有可无的,这是完全错误的,splitChunks就是根据cacheGroups去拆分模块的, ...
- css 动画中 ease,seae-in,ease-in-out,ease-out,效果区别
linear 规定以相同速度开始至结束的过渡效果(等于 cubic-bezier(0,0,1,1)).(匀速) ease 规定慢速开始,然后变快,然后慢速结束的过渡效果(cubic-bezier(0. ...
- JS算法之八皇后问题(回溯法)
八皇后这个经典的算法网上有很多种思路,我学习了之后自己实现了一下,现在大概说说我的思路给大家参考一下,也算记录一下,以免以后自己忘了要重新想一遍. 八皇后问题 八皇后问题,是一个古老而著名的问题,是回 ...
- .net core系列之《sdk和runtime区别及使用CLI在Ubuntu上快速搭建Console,WebApi,MVC三大应用模型》
一.需要安装的软件 1.虚拟机安装Ubuntu系统(本人用的是vmware-14.1.12和buntu-18.04) 2.Xshell或 Putty(连接ssh服务) 3.FileZilla(ftp上 ...
- 找工作笔试面试那些事儿(13)---操作系统常考知识点总结 ZZ 【操作系统】
http://blog.csdn.net/han_xiaoyang/article/details/11285485 上一节对数据库的知识做了一个小总结,实际找工作过程中,因为公司或单位侧重点不一样, ...
- oracle 帐号scott被锁定 如何解锁
由于多次输入:账号 密码不对 oracle 帐号scott被锁定 如何解锁: 具体操作步骤如下:C:> sqlplus请输入用户名:sys输入口令:sys as sysdba //注意:在口令这 ...