BZOJ2795 [Poi2012]A Horrible Poem
来源:互联网 发布:java中的cgi 编辑:程序博客网 时间:2024/06/05 07:00
首先答案答案一定是长度的约数并且把询问串开头去掉答案那么长结尾去掉答案那么长得到的两个串是相等的
判相等可以用hash
但是直接枚举会T
我们发现循环节重复的次数一定是每个字母出现次数的约数,所以求出所有字母出现次数还有区间长度的最大公约数,枚举这个约数,然后就过了
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<ctime>#include<cmath>#include<algorithm>#include<iomanip>#include<vector>#include<map>#include<set>#include<bitset>#include<queue>#include<stack>using namespace std;#define MAXN 500010#define MAXM 1010#define INF 1000000000#define MOD 1000000007#define eps 1e-8#define ll long longll bas=233;int n,m;char s[MAXN];ll h[MAXN];ll mi[MAXN];int S[MAXN][26];int gcd(int x,int y){return !y?x:gcd(y,x%y);}ll hs(int x,int y){return (h[x+y-1]-h[x-1]*mi[y]%MOD+MOD)%MOD;}bool jud(int x,int y,int l){return hs(x,y-x+1-l)==hs(x+l,y-x+1-l);}int main(){/*freopen("okr8.in","r",stdin);freopen("dui.txt","w",stdout);//*/int i,j,x,y;scanf("%d%s",&n,s+1);mi[0]=1;for(i=1;i<=n;i++){mi[i]=mi[i-1]*bas%MOD;h[i]=(h[i-1]*bas+s[i])%MOD;for(j=0;j<26;j++){S[i][j]=S[i-1][j]+((s[i]-'a')==j);}}scanf("%d",&m);while(m--){scanf("%d%d",&x,&y);int c=y-x+1;for(i=0;i<26;i++){c=gcd(c,S[y][i]-S[x-1][i]);}if(c==1){printf("%d\n",y-x+1);continue ;}bool flag=0;for(i=1;i*i<=c;i++){if(!(c%i)){if(jud(x,y,(y-x+1)/c*i)){printf("%d\n",(y-x+1)/c*i);flag=1;break;}}}if(flag){continue ;}for(i--;i;i--){if(!(c%i)){if(jud(x,y,(y-x+1)/i)){printf("%d\n",(y-x+1)/i);break;}}}}return 0;}/**/
0 0
- 【POI2012】【BZOJ2795】A Horrible Poem
- BZOJ2795: [Poi2012]A Horrible Poem
- BZOJ2795 [Poi2012]A Horrible Poem
- bzoj2795: [Poi2012]A Horrible Poem
- BZOJ2795/POI2012 A horrible poem
- BZOJ2795: [Poi2012]A Horrible Poem
- 字符串hash,bzoj2795[Poi2012]A Horrible Poem
- 【bzoj2795】[Poi2012]A Horrible Poem hash
- [BZOJ2795] [Poi2012] [字符串hash] A Horrible Poem
- bzoj2795[Poi2012]A Horrible Poem 暴力hash
- 【BZOJ2795】[Poi2012]A Horrible Poem【Hash】【GCD】【暴力】
- 2795: [Poi2012]A Horrible Poem
- [BZOJ 2795]POI2012 A Horrible Poem
- BZOJ 2795 Poi2012 A Horrible Poem Hash
- 2795: [Poi2012]A Horrible Poem hash
- bzoj 2795 [Poi2012]A Horrible Poem hash
- BZOJ 2795:[Poi2012]A Horrible Poem
- bzoj 2795: [Poi2012]A Horrible Poem hash
- PHP array_multisort—对多个数组或多维数组进行排序
- 学习转载系列-《安卓自定义View教程目录》
- 安卓使用”百度地图SDK“的技术总结以及“常见错误处理”
- python3入门学习
- Scala学习第十七弹 类
- BZOJ2795 [Poi2012]A Horrible Poem
- iptables的使用方法(带常用实例)
- 微信公众号 创建菜单post数据格式
- C语言 之编译器优化
- 解析 Qt 网络之UDP 网络基础学习
- android 5.1编译问题
- 统一全站字符编码
- Spring 4.x框架中的新特性---Spring4.0框架的新功能和改善
- Java IO InputStreamReader和OutputStreamWriter