[POI2012]OKR-A Horrible Poem
正解:对于一个区间l,r,它的循环节长度一定是它的因数。
然后如果循环节是这个长度,那么[l+len,r]一定等于[l,r-len]。
然后每次询问的时候就把它的长度的最小质因子提出来。
BZOJ上都A了,然而LOJ上T了一个点。
//<!--
// ::
// :;J7, :, ::;7:
// ,ivYi, , ;LLLFS:
// :iv7Yi :7ri;j5PL
// ,:ivYLvr ,ivrrirrY2X,
// :;r@Wwz.7r: :ivu@kexianli.
// :iL7::,:::iiirii:ii;::::,,irvF7rvvLujL7ur
// ri::,:,::i:iiiiiii:i:irrv177JX7rYXqZEkvv17
// ;i:, , ::::iirrririi:i:::iiir2XXvii;L8OGJr71i
// :,, ,,: ,::ir@mingyi.irii:i:::j1jri7ZBOS7ivv,
// ,::, ::rv77iiiriii:iii:i::,rvLq@huhao.Li
// ,, ,, ,:ir7ir::,:::i;ir:::i:i::rSGGYri712:
// ::: ,v7r:: ::rrv77:, ,, ,:i7rrii:::::, ir7ri7Lri
// , 2OBBOi,iiir;r:: ,irriiii::,, ,iv7Luur:
// ,, i78MBBi,:,:::,:, :7FSL: ,iriii:::i::,,:rLqXv::
// : iuMMP: :,:::,:ii;2GY7OBB0viiii:i:iii:i:::iJqL;::
// , ::::i ,,,,, ::LuBBu BBBBBErii:i:i:i:i:i:i:r77ii
// , : , ,,:::rruBZ1MBBqi, :,,,:::,::::::iiriri:
// , ,,,,::::i: @arqiao. ,:,, ,:::ii;i7:
// :, WJMZBMR ,,:::::,:::::::::,, ,:i,:,,,,,::i:iiii
// :: BBBBBBBBB0, ,,::: , ,:::::: , ,,,, ,,:::::::
// i, , ,8BMMBBBBBBi ,,:,, ,,, , , , , , :,::ii::i::
// : iZMOMOMBBM2::::::::::,,,, ,,,,,,:,,,::::i:irr:i:::,
// i ,,:;u0MBMOG1L:::i:::::: ,,,::, ,,, ::::::i:i:iirii:i:i:
// : ,iuUuuXUkFu7i:iii:i:::, :,:,: ::::::::i:i:::::iirr7iiri::
// : :rk@Yizero.i:::::, ,:ii:::::::i:::::i::,::::iirrriiiri::,
// : 5BMBBBBBBSr:,::rv2kuii:::iii::,:i:,, , ,,:,:i@petermu.,
// , :r50EZ8MBBBBGOBBBZP7::::i::,:::::,: :,:,::i;rrririiii::
// :jujYY7LS0ujJL7r::,::i::,::::::::::::::iirirrrrrrr:ii:
// ,: :@kevensun.:,:,,,::::i:i:::::,,::::::iir;ii;7v77;ii;i,
// ,,, ,,:,::::::i:iiiii:i::::,, ::::iiiir@xingjief.r;7:i,
// , , ,,,:,,::::::::iiiiiiiiii:,:,:::::::::iiir;ri7vL77rrirri::
// :,, , ::::::::i:::i:::i:i::,,,,,:,::i:i:::iir;@Secbone.ii:::
//
//-->
#include <iostream>
#include <cstdio>
#include <vector>
#include <cstring>
using namespace std;
const int base=,mod=;
int n,mnpr[],tot,prim[];
bool vis[];
unsigned long long pow[];
unsigned long long hsh[];
char s[];
#define gc getchar
inline int rd() {
register int x=;register char ch=gc();
while(!isdigit(ch)) ch=gc();
while(isdigit(ch)) {x=x*10ll+(ch^);ch=gc();}
return x;
}
unsigned long long gethsh(int l,int r) {
return (hsh[r]-hsh[l-]*pow[r-l+]%mod+mod)%mod;
}
void getmn() {
mnpr[]=;
for(int i=;i<=;i++) {
if(!vis[i]) prim[++tot]=i,vis[i]=,mnpr[i]=i;
for(int j=;j<=tot&&prim[j]*i<=;j++) {
vis[i*prim[j]]=;mnpr[i*prim[j]]=min(mnpr[i*prim[j]],prim[j]);
if(i%prim[j]==) {mnpr[i]=prim[j];break;}
}
}
}
int main() {
memset(mnpr,0x3f,sizeof mnpr);
n=rd();
char ch=gc();
while(ch<'a'||ch<'z')ch=gc();
for(int i=;i<=n;i++) s[i]=ch,ch=gc();
getmn();
pow[]=;
hsh[]=;
for(int i=;i<=n;i++) {
hsh[i]=(hsh[i-]*base+s[i]-'a'+)%mod;
pow[i]=pow[i-]*base%mod;
}
int q,l,r;
q=rd();
while(q--) {
l=rd();r=rd();
if(l>r) swap(l,r);
int len=r-l+,ans=len;
while(len!=&&len>) {
if(gethsh(l,r-ans/mnpr[len])==gethsh(l+ans/mnpr[len],r)) ans=ans/mnpr[len];
len=len/mnpr[len];
}
printf("%d\n",ans);
}
}
OKR
[POI2012]OKR-A Horrible Poem的更多相关文章
- 【bzoj2795】【Poi2012】A Horrible Poem
题解: 询问区间的整循环节 设区间长度为$n$ 如果有循环节长为$x$和$y$,那由斐蜀定理得$gcd(x,y)$也一定为一个循环节: 假设最小的循环节长为$mn$,那么对于任何循环节长$x$,一定$ ...
- 2795: [Poi2012]A Horrible Poem
2795: [Poi2012]A Horrible Poem Time Limit: 50 Sec Memory Limit: 128 MBSubmit: 484 Solved: 235[Subm ...
- [BZOJ2795][Poi2012]A Horrible Poem
2795: [Poi2012]A Horrible Poem Time Limit: 50 Sec Memory Limit: 128 MBSubmit: 261 Solved: 150[Subm ...
- BZOJ 2795: [Poi2012]A Horrible Poem( hash )
...字符串hash. 假如长度x是一个循环节, 那么对于任意n(x | n)也是一个循环节. 设当前询问区间[l, r]长度为len = ∏piai, 最终答案ans = ∏piai' ,我们只需枚 ...
- P3538 [POI2012]OKR-A Horrible Poem
P3538 [POI2012]OKR-A Horrible Poem hash+线性筛 题解 <----这篇写的不错(其实是我懒得码字了qwq) UVA10298 Power Strings 的 ...
- bzoj 2795 [Poi2012]A Horrible Poem hash+数论
2795: [Poi2012]A Horrible Poem Time Limit: 50 Sec Memory Limit: 128 MBSubmit: 640 Solved: 322[Subm ...
- 【BZOJ2795】[Poi2012]A Horrible Poem hash
[BZOJ2795][Poi2012]A Horrible Poem Description 给出一个由小写英文字母组成的字符串S,再给出q个询问,要求回答S某个子串的最短循环节.如果字符串B是字符串 ...
- 洛谷P3538 [POI2012]OKR-A Horrible Poem [字符串hash]
题目传送门 A Horrible Poem 题目描述 Bytie boy has to learn a fragment of a certain poem by heart. The poem, f ...
- #10038.A Horrible Poem
#10038.A Horrible Poem 题目传送门 思路解析 既然这道题目在hash板块里,那么自然就可以想到用hash做这道题目. 首先我们可以用hash数组存储字符串的前缀的hash值. 因 ...
- 【hash】A Horrible Poem
[题目链接] # 10038. 「一本通 2.1 练习 4」A Horrible Poem [参考博客] A Horrible Poem (字符串hash+数论) [题目描述] 给出一个由小写英文字母 ...
随机推荐
- oracle 学习笔记之触发器
说明 数据库触发器是一个与表相关联的.存储的PL/SQL程序. 每当一个特定的数据操作语句(Insert,update,delete)在指定的表上发出时,Oracle自己主动地运行触发器中定义的语句序 ...
- Gevent的协程实现原理
之前之所以看greenlet的代码实现,主要就是想要看看gevent库的实现代码. .. 然后知道了gevent的协程是基于greenlet来实现的...所以就又先去看了看greenlet的实现... ...
- Kids Store - OpenCart 自适应主题模板 ABC-0022
KIDS STORE - OPENCART 自适应主题模板 ABC-0022 FEATURES Get FREE Lifetime Updates Get FREE On-Going Support ...
- luogu2467 [SDOI2010]地精部落
题目大意 求在$[1,n]$的排列中是波动序列的数量. 题解 性质 当我们对波动序列$a$进行以下操作时,得到的新序列仍然是个波动序列: 若$a_i = a_j+1且|j-i|>1$,将$a_i ...
- Java之POI读取Excel的Package should contain a content type part [M1.13]] with root cause异常问题解决
Java之POI读取Excel的Package should contain a content type part [M1.13]] with root cause异常问题解决 引言: 在Java中 ...
- hdu 5823 color II —— 子集DP
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5823 看博客:http://www.cnblogs.com/SilverNebula/p/5929550. ...
- Java项目打包发布
Java项目打包发布 如果只想发布为一个可执行的jar包,使用eclipse的Export功能就可以了 使用eclipse的Export功能,将项目中的所有package打包为一个pet.jar文件, ...
- codevs2800送外卖(floyd+状压dp)
2800 送外卖 时间限制: 2 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 有一个送外卖的,他手上有n份订单,他要把n份东 ...
- 浅讲ajax
1.ajax入门案例 1.1 搭建Web环境 ajax对于各位来说,应该都不陌生,正因为ajax的产生,导致前台页面和服务器之间的数据传输变得非常容易,同时还可以实现页面的局部刷新.通过在后台与服务器 ...
- 【贪心】小Y的炮[cannon]题解
模拟赛的题目,做的时候由于第二题表打太久了,只剩下40分钟,想都没想就写了一个爆搜20分... 这道题单调性很关键,下面会解释 P.S.解释在代码里 #include<cstdio> #i ...