bzoj1511 [POI2006]OKR-Periods of Words kmp+乱搞
1511: [POI2006]OKR-Periods of Words
Time Limit: 5 Sec Memory Limit: 64 MB
Submit: 351 Solved: 220
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
babababa
Sample Output
直接求一下next,之后把所有的next向前找到最后一个非零地方的Next。
然后扫一遍对于每个next非零位置的周期来说就是i-new_next[i]
还是之前的那个性质,n-next[i]是最小循环周期,推一下就变成最长了。
- #include<cstring>
- #include<cmath>
- #include<cstdio>
- #include<algorithm>
- #include<iostream>
- #define ll long long
- #define inf 1000000007
- #define N 1000007
- #define Wb putchar(' ')
- #define We putchar('\n')
- #define rg register int
- using namespace std;
- inline int read()
- {
- int x=,f=;char ch=getchar();
- while(!isdigit(ch)){if(ch=='-')f=-;ch=getchar();}
- while(isdigit(ch)){x=(x<<)+(x<<)+ch-'';ch=getchar();}
- return x*f;
- }
- inline void write(ll x)
- {
- if(x<) putchar('-'),x=-x;
- if (x==) putchar();
- int num=;char c[];
- while(x) c[++num]=(x%)+,x/=;
- while(num) putchar(c[num--]);
- }
- int n,t[N],f[N];
- ll ans;
- char s[N];
- void make_nxt()
- {
- t[]=-;
- for (rg i=,j;i<n;i++)
- {
- j=t[i];
- while(j!=-&&s[i]!=s[j])j=t[j];
- t[i+]=++j;
- }
- }
- int main()
- {
- n=read();scanf("%s",s);
- make_nxt();
- for (rg i=;i<=n;i++)
- {
- if (t[i]) f[i]=f[t[i]];
- else f[i]=i;
- if (i-t[i]==i) continue;
- ans+=i-f[i];
- }
- write(ans);
- }
bzoj1511 [POI2006]OKR-Periods of Words kmp+乱搞的更多相关文章
- 学渣乱搞系列之扩展KMP的那点事
扩展KMP牵涉了一些相对运动的姿势,比较费解!本学渣看了一天的扩展KMP,打算写点东西...本文看后,出现的后果本人一概不负责.毕竟我不是很会表达. 扩展KMP是搞什么灰机的?本学渣所知道的扩展KMP ...
- 2021.11.09 P3435 [POI2006]OKR-Periods of Words(KMP)
2021.11.09 P3435 [POI2006]OKR-Periods of Words(KMP) https://www.luogu.com.cn/problem/P3435 题意: 对于一个仅 ...
- 洛谷 P3438 - [POI2006]ZAB-Frogs(乱搞/李超线段树)
题面传送门 首先一眼二分答案,我们假设距离 \((i,j)\) 最近的 scarefrog 离它的距离为 \(mn_{i,j}\),那么当我们二分到 \(mid\) 时我们显然只能经过 \(mn_{i ...
- hash进阶:使用字符串hash乱搞的姿势
前言 此文主要介绍hash的各种乱搞方法,hash入门请参照我之前这篇文章 不好意思hash真的可以为所欲为 在开头先放一下题表(其实就是我题解中的hash题目qwq) 查询子串hash值 必备的入门 ...
- URAL 1827 Indigenous Wars(排序、乱搞)
题意:给一个长度为n数组{a[i]}.有m个操作Ti,Si,Li表示找以Ti值结束,以Si值开始,长度为Li的连续子串.找到后,将区间的答案值设为1.一开始答案值全部为0.最后输出n个答案值. 好久没 ...
- UVA 11853 [dfs乱搞]
/* 大连热身E题 不要低头,不要放弃,不要气馁,不要慌张 题意: 在1000×1000的格子内有很多个炮弹中心,半径给定. 为某人能否从西部边界出发,从东部边界走出. 不能输出不能,能的话输出最北边 ...
- Codeforces 732e [贪心][stl乱搞]
/* 不要低头,不要放弃,不要气馁,不要慌张 题意: 给n个插座,m个电脑.每个插座都有一个电压,每个电脑都有需求电压. 每个插座可以接若干变压器,每个变压器可以使得电压变为x/2上取整. 有无限个变 ...
- 【BZOJ-4692】Beautiful Spacing 二分答案 + 乱搞(DP?)
4692: Beautiful Spacing Time Limit: 15 Sec Memory Limit: 128 MBSubmit: 46 Solved: 21[Submit][Statu ...
- 【BZOJ-3578】GTY的人类基因组计划2 set + map + Hash 乱搞
3578: GTY的人类基因组计划2 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 367 Solved: 159[Submit][Status][ ...
随机推荐
- html js 全选 反选 全不选源代码
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- pyextend库-merge可迭代对象合并函数
pyextend - python extend lib merge (iterable1, *args) 参数: iterable1: 实现 __iter__的可迭代对象, 如 str, tupl ...
- 数据库与数据仓库的比较Hbase——Hive
数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented).集成的(Integrate).相对稳定的(Non-Volatile).反映历史变化(Time Varian ...
- Js 问题分析--js 影响页面性能
文档下载链接:http://pan.baidu.com/s/1i4Hci4d (失效请留言)
- Java接口interface,匿名内部类
接口 1.接口内部为 常量+公用的抽象方法.类必须实现接口中的所有方法 2.接口的语法格式:不写abstract会自动添加,可以继承多个接口 修饰符不能使private,protected [修饰符] ...
- 判断字符串中是否存在的几种方案:string.indexof、string.contains、list.contains、list.any几种方式效率对比
我们在做项目时,可能会遇到这样的需求,比如判断,1,2,3,33,22,123, 中是否存在,3,. var str=",1,2,3,33,22,123,"; 一般有几种方式: 1 ...
- mosquitto启动时Address already in use 和 一般的 Address already in use
对于mosquitto启动时的地址占用错误,可能是mosquitto启动之后没关掉,进程一直占用了端口.查看mosquitto相关的进程,然后关掉就可启动了. 关掉mosquitto进程即可 参考: ...
- 技嘉主板+AMD CPU开启CPU虚拟化方法
硬件环境:技嘉AB350+AMD Ryzen 5 1600X 由于安装虚拟机的需要,所以要开启CPU的虚拟化. 首先进入BIOS. 然后如图:(M.I.T-高级频率设定-CPU超频进阶设置-SVM M ...
- delphi self 的使用
delphi之self 在使用delphi的对象技术的时候,经常会看到一个词汇:self,它到底指的是什么呢? 我们还要从对象与类的关系谈起. 类是对将要创建的对象的性质的描述,是一种文档.这很重要: ...
- python获取toast 验证
appium版本 1.6.3 desired_caps['automationName']='uiautomator2' def _find_toast(self,message,timeou ...