LOJ#2452. 「POI2010」反对称 Antisymmetry
题目描述
对于一个 \(0/1\) 字符串,如果将这个字符串 \(0\) 和 \(1\) 取反后,再将整个串反过来和原串一样,就称作「反对称」字符串。比如 \(00001111\) 和 \(010101\) 就是反对称的,而 \(1001\) 就不是。
现在给出一个长度为 \(n\) 的 \(0/1\) 字符串,求它有多少个子串是反对称的,注意这里相同的子串出现在不同的位置会被重复计算。
输入格式
第一行一个正整数 \(n\) 。
第二行一个长度为 \(n\) 的 \(0/1\) 字符串。
输出格式
一行一个整数,表示原串的反对称子串个数。
样例
样例输入
8
11001011
样例输出
7
数据范围与提示
对于 \(100\%\) 的数据, \(1\le n\le 500\ 000\) 。
Translated by vincent163
题解
马拉车也是可以做的而且复杂度更优。
我还是菜啊没有看出来单调性,这个取反翻转操作是单调的,你一个大的串如果是反对称串,中间的任何一个也肯定是。因为翻转的位置并没有变...
那么枚举起点,二分子串长度判断即可。
因为取反后翻转这个操作,所以不可能有奇数串符合条件(奇数串取反后翻转了一定不相等),所以判断也很好写
然后比较坑的就是答案要用longlong存,我因为这个爆了好几发,一开始还以为是进制数选的不好。
复杂度\(O(nlogn)\)
#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
const int N = 500010;
const ull base = 13131;
ull h1[N], h2[N], p[N];
int n;
ll ans = 0;
char s[N];
ull get_h1(int l, int r) { return h1[r] - h1[l - 1] * p[r - l + 1]; }
ull get_h2(int l, int r) { return h2[l] - h2[r + 1] * p[r - l + 1]; }
int check(int x) {
int l = 1, r = min(x, n - x);
while(l <= r) {
int mid = (l + r) >> 1;
if(get_h1(x - mid + 1, x) == get_h2(x + 1, x + mid)) l = mid + 1;
else r = mid - 1;
}
return r;
}
int main() {
scanf("%d%s", &n, s + 1); p[0] = 1;
for(int i = 1; i <= n; ++i) p[i] = p[i - 1] * base, h1[i] = h1[i - 1] * base + (ull)s[i];
for(int i = n; i; --i) h2[i] = h2[i + 1] * base + (ull)(s[i] == '0' ? s[i] + 1 : s[i] - 1);
for(int i = 1; i < n; ++i) ans += check(i);
printf("%lld\n", ans);
}
LOJ#2452. 「POI2010」反对称 Antisymmetry的更多相关文章
- 「POI2010」反对称 Antisymmetry (manacher算法)
# 2452. 「POI2010」反对称 Antisymmetry [题目描述] 对于一个 $0/1$ 字符串,如果将这个字符串 $0$ 和 $1$ 取反后,再将整个串反过来和原串一样,就称作「反对称 ...
- LOJ#2427. 「POI2010」珍珠项链 Beads
题目地址 题目链接 题解 不会算复杂度真是致命,暴力枚举k每次计算是n/2+n/3+n/4+...+1的,用调和级数算是\(O(nlogn)\)的... 如果写哈希表的话能够\(O(nlogn)\), ...
- Loj #2192. 「SHOI2014」概率充电器
Loj #2192. 「SHOI2014」概率充电器 题目描述 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: 「采用全新纳米级加工技术,实现元件与导线能否通电完 ...
- Loj #3096. 「SNOI2019」数论
Loj #3096. 「SNOI2019」数论 题目描述 给出正整数 \(P, Q, T\),大小为 \(n\) 的整数集 \(A\) 和大小为 \(m\) 的整数集 \(B\),请你求出: \[ \ ...
- Loj #3093. 「BJOI2019」光线
Loj #3093. 「BJOI2019」光线 题目描述 当一束光打到一层玻璃上时,有一定比例的光会穿过这层玻璃,一定比例的光会被反射回去,剩下的光被玻璃吸收. 设对于任意 \(x\),有 \(x\t ...
- Loj #3089. 「BJOI2019」奥术神杖
Loj #3089. 「BJOI2019」奥术神杖 题目描述 Bezorath 大陆抵抗地灾军团入侵的战争进入了僵持的阶段,世世代代生活在 Bezorath 这片大陆的精灵们开始寻找远古时代诸神遗留的 ...
- Loj #2542. 「PKUWC2018」随机游走
Loj #2542. 「PKUWC2018」随机游走 题目描述 给定一棵 \(n\) 个结点的树,你从点 \(x\) 出发,每次等概率随机选择一条与所在点相邻的边走过去. 有 \(Q\) 次询问,每次 ...
- Loj #3059. 「HNOI2019」序列
Loj #3059. 「HNOI2019」序列 给定一个长度为 \(n\) 的序列 \(A_1, \ldots , A_n\),以及 \(m\) 个操作,每个操作将一个 \(A_i\) 修改为 \(k ...
- Loj #3056. 「HNOI2019」多边形
Loj #3056. 「HNOI2019」多边形 小 R 与小 W 在玩游戏. 他们有一个边数为 \(n\) 的凸多边形,其顶点沿逆时针方向标号依次为 \(1,2,3, \ldots , n\).最开 ...
随机推荐
- python windows环境下安装
下载python安装包,双击安装后, 在cmd中输入python 若无反应, 在cmd设置环境变量 变量 : set PATH=C:\...\...\...[python的编译器的路径]:%PATH% ...
- 【转】Spotlight实时监控Windows Server 2008
Windows Server 2008作为服务器平台已逐渐被推广和应用,丰富的功能和良好的稳定性为其赢得了不错的口碑.但是和Windows Server 2003相比,其系统的自我监控功能并没有多大的 ...
- MySQL 查询表中某字段值重复的数据
MySQL中,查询表(dat_bill_2018_11)中字段(product_id)值重复的记录: ; 说明:先用GROUP BY 对 product_id 进行分组,同时使用COUNT(*)进行统 ...
- 写自动更新程序出现"远程服务器返回错误: (404) 未找到"
在win2003配置后,在客户端运行时能够下载exe和dll文件,但是在更新lib文件时总是报“远程服务器返回错误: (404) 未找到”错误,不明白咋会出现这个问题,去网上一查,发现以下解决办法: ...
- Runtime单例模式类 -- 控制电脑关机
package demo1; import java.io.IOException; public class RunTimeDemo { public static void main(String ...
- python字典的排序,按key排序和按value排序---sorted()
>>> d{'a': 5, 'c': 3, 'b': 4} >>> d.items()[('a', 5), ('c', 3), ('b', 4)] 字典的元素是成键 ...
- git使用,多分支合并代码解决冲突,git删除远程分支,删除远程master默认分支方法
git使用,多分支合并代码解决冲突,git删除远程分支,删除远程master默认分支方法提交代码流程:1.先提交代码到自己分支上2.切换到devlop拉取代码合并到当前分支3.合并后有变动的推送到自己 ...
- golang学习笔记13 Golang 类型转换整理 go语言string、int、int64、float64、complex 互相转换
golang学习笔记13 Golang 类型转换整理 go语言string.int.int64.float64.complex 互相转换 #string到intint,err:=strconv.Ato ...
- 利用arcgis发布综合又详细的地理定位服务
数据: sheng:省,city:城市,xian:区县,street2:街道,life:生活服务(house:住宅小区)需求: 根据经纬度信息,得到详细地址信息,比如:甘肃省兰州市**县**街道**小 ...
- 配置方案:Redis持久化RDB和AOF
Redis持久化方案 Redis是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘.当下次Redis重启时,利 ...