正解:对于一个区间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. 2.1-VLAN/TRUNK/VTP

    2.1-VLAN/TRUNK/VTP     注意:配置VLAN时要退出VLAN配置模式才会执行 如果VLAN被删除或者shutdown,那么属于这个vlan的接口将被阻塞(灯一直是橙色,变不了绿色) ...

  2. Hilbert曲线简单介绍及生成算法

    Hilbert曲线 Hilbert曲线是一种填充曲线,相似的填充曲线还包含Z曲线.格雷码等其它方法.Hilbert曲线根据自身空间填充曲线的特性,能够线性地贯穿二维或者更高维度每一个离散单元.而且只穿 ...

  3. 大数据处理之道(实验方法&lt;二&gt;)

    一:交叉验证(crossvalidation)(附实验的三种方法)方法简单介绍   (1) 定义:交叉验证(Cross-validation)主要用于建模应用中,比如PCR(Principal Com ...

  4. 在win10 64 bit上安装theano

    在windows10上安装theano,过程例如以下: 1.准备工作.先安装Anaconda 64位.然后执行 conda install mingw libpython 2.先安装pycuda,能够 ...

  5. Cocos2d-x飞机大战教程笔记

    咳咳~跟着大神的教程学做Cocos2d-x的飞机大战...鉴于我是那种跟着教程都会出非常多错的人,所以还是一路跟着做些笔记比較好.并且因为是用课余时间,所以仅仅能断断续续地做,写下来也好让自己别忘记~ ...

  6. springboot-quartz 实现动态添加,修改,删除,暂停,恢复等功能

    任务相关信息:springboot-quartz普通任务与可传参任务 一.任务实体类 package cloud.app.prod.home.quartz; import java.io.Serial ...

  7. Handle exception in ServiceBase.OnStart method

    https://docs.microsoft.com/en-us/dotnet/api/system.serviceprocess.servicebase.onstart?view=netframew ...

  8. [Apple开发者帐户帮助]六、配置应用服务(2)创建DeviceCheck私钥

    要验证与DeviceCheck服务的通信,您将使用启用了DeviceCheck的私钥. 首先创建并下载启用了DeviceCheck 的私钥.然后获取密钥标识符(kid)以创建JSON Web令牌(JW ...

  9. Django基础必备三件套: HttpResponse render redirect

    1. HttpResponse :  它的作用是内部传入一个字符串参数, 然后发给浏览器 def index(request): return HttpResponse('ok') 2. render ...

  10. php 制作略缩图

    一.需求 最近公司的项目中有个需求,就是用户上传自己的微信二维码,然后系统会自动将用户的微信二维码合并到产品中 二.分析 因为该系统是手机端的,所以从用户端的体验出发,用户当然是直接在微信上保存二维码 ...