国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

BZOJ2795: [Poi2012]A Horrible Poem

2019-11-06 06:44:11
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

一個(gè)字符串若被分成k個(gè)循環(huán)節(jié),每個(gè)循環(huán)節(jié)里每種字母出現(xiàn)次數(shù)肯定都是一樣的,那么循環(huán)節(jié)的個(gè)數(shù)k一定是這段字符串里每種字母出現(xiàn)次數(shù)的gcd的約數(shù),然后枚舉k,hash判一下


#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#include<ctime>#include<bitset>#include<string>#include<vector>#include<cstdio>#include<cstdlib>#include<cstring>#include<climits>#include<complex>#include<iostream>#include<algorithm>#define ll long long#define lowbit(x) x&(-x)using namespace std;void read(int &x){ char c; while(!((c=getchar())>='0'&&c<='9')); x=c-'0'; while((c=getchar())>='0'&&c<='9') x=(x<<3)+(x<<1)+c-'0';}void down(int &x,int y){if(x>y)x=y;}const int maxn = 510000;int gcd(int a,int b){return a==0?b:gcd(b%a,a);}ll hk=233,hk2=1e9+7;char s[maxn];ll sum[maxn],pw[maxn];int num[maxn][26];int n,q;bool judge(int l1,int r1,int l2,int r2){ ll s1=sum[r1]-sum[l1-1]*pw[r1-l1+1]; ll s2=sum[r2]-sum[l2-1]*pw[r1-l1+1]; return s1==s2;}int main(){ read(n); scanf("%s",s+1); for(int i=1;i<=n;i++) { for(int j=0;j<26;j++) num[i][j]=num[i-1][j]+(s[i]-j=='a'); } for(int i=1;i<=n;i++) sum[i]=sum[i-1]*hk+(ll)s[i]; pw[0]=1ll; for(int i=1;i<=n;i++) pw[i]=pw[i-1]*hk; read(q); while(q--) { int l,r; read(l); read(r); int lr=(r-l+1); int D=lr; for(int i=0;i<26;i++) D=gcd(D,num[r][i]-num[l-1][i]); int ans=lr; int k=sqrt(D); for(int i=1;i<=k;i++) if(D%i==0) { int tk; tk=lr/i; if(judge(l,r-tk,l+tk,r)) down(ans,tk); if(i*i==D) break; tk=lr/(D/i); if(judge(l,r-tk,l+tk,r)) down(ans,tk); }
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 禹城市| 平度市| 凌海市| 梁河县| 石棉县| 靖远县| 普洱| 久治县| 焦作市| 康保县| 乌鲁木齐市| 安泽县| 博爱县| 合肥市| 富阳市| 闽清县| 栾城县| 北辰区| 于田县| 泰宁县| 海晏县| 申扎县| 双牌县| 淳安县| 慈利县| 安庆市| 株洲市| 喀喇| 新乡县| 礼泉县| 天峻县| 罗平县| 天祝| 贺兰县| 呈贡县| 剑河县| 彰武县| 长汀县| 揭东县| 侯马市| 都昌县|