正解:对于一个区间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的更多相关文章

  1. 【bzoj2795】【Poi2012】A Horrible Poem

    题解: 询问区间的整循环节 设区间长度为$n$ 如果有循环节长为$x$和$y$,那由斐蜀定理得$gcd(x,y)$也一定为一个循环节: 假设最小的循环节长为$mn$,那么对于任何循环节长$x$,一定$ ...

  2. 2795: [Poi2012]A Horrible Poem

    2795: [Poi2012]A Horrible Poem Time Limit: 50 Sec  Memory Limit: 128 MBSubmit: 484  Solved: 235[Subm ...

  3. [BZOJ2795][Poi2012]A Horrible Poem

    2795: [Poi2012]A Horrible Poem Time Limit: 50 Sec  Memory Limit: 128 MBSubmit: 261  Solved: 150[Subm ...

  4. BZOJ 2795: [Poi2012]A Horrible Poem( hash )

    ...字符串hash. 假如长度x是一个循环节, 那么对于任意n(x | n)也是一个循环节. 设当前询问区间[l, r]长度为len = ∏piai, 最终答案ans = ∏piai' ,我们只需枚 ...

  5. P3538 [POI2012]OKR-A Horrible Poem

    P3538 [POI2012]OKR-A Horrible Poem hash+线性筛 题解 <----这篇写的不错(其实是我懒得码字了qwq) UVA10298 Power Strings 的 ...

  6. bzoj 2795 [Poi2012]A Horrible Poem hash+数论

    2795: [Poi2012]A Horrible Poem Time Limit: 50 Sec  Memory Limit: 128 MBSubmit: 640  Solved: 322[Subm ...

  7. 【BZOJ2795】[Poi2012]A Horrible Poem hash

    [BZOJ2795][Poi2012]A Horrible Poem Description 给出一个由小写英文字母组成的字符串S,再给出q个询问,要求回答S某个子串的最短循环节.如果字符串B是字符串 ...

  8. 洛谷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 ...

  9. #10038.A Horrible Poem

    #10038.A Horrible Poem 题目传送门 思路解析 既然这道题目在hash板块里,那么自然就可以想到用hash做这道题目. 首先我们可以用hash数组存储字符串的前缀的hash值. 因 ...

  10. 【hash】A Horrible Poem

    [题目链接] # 10038. 「一本通 2.1 练习 4」A Horrible Poem [参考博客] A Horrible Poem (字符串hash+数论) [题目描述] 给出一个由小写英文字母 ...

随机推荐

  1. tabBar颜色改动

    //未点击的颜色 [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKey ...

  2. 64位BASM学习随笔(一)

     64位BASM学习随笔(一) Delphi的BASM一直是我最喜爱的内嵌汇编语言,同C/C++的内联汇编相比,它更方便,更具灵活性,由于C/C++的内联汇编仅仅能是或插入式的汇编代码,函数花括号 ...

  3. C++学习笔记22,普通函数重载(1)

    转载请注明出处:http://blog.csdn.net/qq844352155/article/details/31353325 该博文仅用于交流学习,请慎用于不论什么商业用途,本博主保留对该博文的 ...

  4. 曼哈顿距离MST

    https://www.cnblogs.com/xzxl/p/7237246.html 讲的不错 /* 曼哈顿距离最小生成树 poj 3241 Object Clustering 按照上面的假设我们先 ...

  5. luogu1984 [SDOI2008] 烧水问题

    题目描述 给出水的比热容.冰点和沸点,问将$n$杯有$\frac{1}{n}\mathrm{kg}$的水从冰点加热到沸点所需最小热量.不一定相邻的两杯水间可以无热量损失地热传递至两者温度相同. 题解 ...

  6. Android休眠唤醒机制简介(二)

    本文转载自:http://blog.csdn.net/zhaoxiaoqiang10_/article/details/24408911 Android休眠唤醒机制简介(二)************* ...

  7. Java获取路径中的文件名(正则表达式)

    Java获取路径中的文件名(正则表达式) 目标 在这个路径中我想得到model2 /E:/2017-02-21--SoftWare/github/test/Java/poiDemo_word2exce ...

  8. hash哈希

    我复习的时候,突然发现没写过hash算法,惊讶!!!赶紧补一下. 把字符串看成base进制的数.Hash值比较就是为了判断是否有相同的字符串.(base是自己定义的大于26的质数,个人认为大一点比较好 ...

  9. Java压缩技术(三) ZIP解压缩——Java原生实现

    原文:http://snowolf.iteye.com/blog/642492 JavaEye的朋友跟我说:“你一口气把ZIP压缩和解压缩都写到一个帖子里,我看起来很累,不如分开好阅读”.ok,面向读 ...

  10. TPshop规格组合错误

    TPshop规格组合错误 修改: admin/logic/goodslogic.class.php 中 方法:getSpecInput() 中 asort($spec_arr_sort) 去掉