[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+数论) [题目描述] 给出一个由小写英文字母 ...
随机推荐
- [Tools] VS Code Tips
Inside one file, you can freely mark the number 1-9: -] And jump to Number of bookmark: cmd + [-] It ...
- Android studio图片ERROR: 9-patch image xx .9.png malformed
Android studio 图片错误 9-patch image error in Android ERROR: 9-patch image xx .9.png malformed 1) 异常: ...
- HDU 2206 IP的计算(字符串处理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2206 Problem Description 在网络课程上,我学到了非常多有关IP的知识. IP全称叫 ...
- UINavigationController具体解释(一)
@UINavigationControlle简单介绍: 1.导航控制器,专门管理控制器的控制器. 2.採用栈的方式管理全部controller,每一个controller管理各自的视图 @UINavi ...
- Linux 服务的加入删除,自己主动执行及状态
CAMS 在安装过程中会自己主动加入相关的服务.在安装的最后过程中会提示用户是否启动服务使服务生效,须要注意的是一个服务被加入后并不表示该服务在系统启动过程中会自己主动执行,仅表示能够使用servic ...
- Project Euler:Problem 33 Digit cancelling fractions
The fraction 49/98 is a curious fraction, as an inexperienced mathematician in attempting to simplif ...
- 大规模的I/O流中有效识别大数据并增强时间局部性
一篇热数据识别存储外文翻译,本文主要在讲思想 原文题目: HDCat: Effectively Identifying Hot Data in Large-scale I/O Streams ...
- C++源码实现:21种常用设计模式
C++源码实现:21种常用设计模式一直以来在设计模式的学习中,都是出现java的源码,这对学习C++的极度不友好.本工程是基于C++实现21种常用的设计模式,里面包含了实例代码和示例.编写的时候在学习 ...
- js简单函数封装
//每index个字符插入一个str字符串 String.prototype.insertStrPerIndex =function(index,str){ if(this.length>ind ...
- Codeforces--596A--Wilbur and Swimming Pool(数学)
A - Wilbur and Swimming Pool Crawling in process... Crawling failed Time Limit:1000MS Memory ...