[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+数论) [题目描述] 给出一个由小写英文字母 ...
随机推荐
- compact处理流程分析
compact处理流程分析 compact的处理与split同样.由client端与flush时检查发起. 针对compact另一个在rs生成时生成的CompactionChecker线程定期去检查是 ...
- 剑指Offer——面试小提示(持续更新中)
(1)应聘者在电话面试的时候应尽可能用形象的语言把细节说清楚. (2)假设在英语面试时没有听清或没有听懂面试官的问题,应聘者要敢于说Pardon. (3)在共享桌面远程面试中.面试官最关心的是应聘者的 ...
- 使用匿名类型做为ComboBox的DataSource
使用匿名类型做为ComboBox的DataSource ArrayList list = new ArrayList(); list.Add(new { id = " ...
- SiteMesh3使用实例和详解
一.SiteMesh介绍 SiteMesh是一个网页布局和修饰的框架,利用它可以将网页的内容和页面结构分离,以达到页面结构共享的目的.[来自百度百科] 通俗的理解就是,SiteMesh把页面中变化的和 ...
- 判断ascii码是什么的函数
function CharMode(iN){ if (iN>=48 && iN <=57) //数字 return 1; if (iN>=65 && ...
- go之for循环
一.基于计数器的迭代 格式 for 初始化语句; 条件语句; 修饰语句{} 实例 package main import "fmt" func main(){ for i:=0;i ...
- J2EE框架(Struts&Hibernate&Spring)的理解
SSH:Struts(表示层)+Spring(业务层)+Hibernate(持久层)Struts:Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求.在MVC框架中,Struts属于 ...
- POJ 1149 PIGS (AC这道题很不容易啊)网络流
PIGS Description Mirko works on a pig farm that consists of M locked pig-houses and Mirko can't unlo ...
- PHP CURL抓取网页 simple_html_dom类
抓取网页数据后 数据录入到discuz中 <?php include('simple_html_dom.php'); function urlText(){ $url = 'http://www ...
- IDEA 使用 git (码市)
1.下载 git,并安装(一直下一步) 2.使用IDEA,检出项目,检出方式选择:git, 3.如果项目有修改,上传修改的文件 4.下载 SourceTree(git的图形化工具),并安装(一直下一步 ...