日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

BestCoder #88(1001 1002)

發(fā)布時(shí)間:2024/8/1 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BestCoder #88(1001 1002) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Find Q

Accepts: 392 Submissions: 780 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/131072 K (Java/Others) 問(wèn)題描述 Byteasar迷戀上了'q'這個(gè)字母。在他眼前有一個(gè)小寫字母組成的字符串SSS,他想找出SSS的所有僅包含字母'q'的連續(xù)子串。但是這個(gè)字符串實(shí)在是太長(zhǎng)了,你能寫個(gè)程序幫助他嗎? 輸入描述 輸入的第一行包含一個(gè)正整數(shù)T(1≤T≤10)T(1\leq T\leq10)T(1T10),表示測(cè)試數(shù)據(jù)的組數(shù)。 對(duì)于每組數(shù)據(jù),包含一行一個(gè)小寫字母組成字符串SSS,保證SSS的長(zhǎng)度不超過(guò)100000100000100000。 輸出描述 對(duì)于每組數(shù)據(jù),輸出一行一個(gè)整數(shù),即僅包含字母'q'的連續(xù)子串的個(gè)數(shù)。 輸入樣例 2 qoder quailtyqqq 輸出樣例 1 7

題解:尺取法直接上就好了,要注意數(shù)據(jù)范圍 long long #pragma comment(linker, "/STACK:1024000000,1024000000") #include <bits/stdc++.h> using namespace std; typedef long long LL; const int N = 100005; char str[N]; int main() {freopen("a.txt","r",stdin);int tcase;scanf("%d",&tcase);while(tcase--){scanf("%s",str+1);int len = strlen(str+1);LL l = 1,r = 1;long long cnt = 0;while(l<=len){while(l<=len&&str[l]!='q') l++;r = l;while(r<=len&&str[r]=='q'){r++;}if(r>l){cnt+=(r-l)*(r-l+1)/2;}l = r;}printf("%lld\n",cnt);}return 0; }

Abelian Period

Accepts: 288 Submissions: 984 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/131072 K (Java/Others) 問(wèn)題描述 設(shè)SSS是一個(gè)數(shù)字串,定義函數(shù)occ(S,x)occ(S,x)occ(S,x)表示SSS中數(shù)字xxx的出現(xiàn)次數(shù)。 例如:S=(1,2,2,1,3),occ(S,1)=2,occ(S,2)=2,occ(S,3)=1S=(1,2,2,1,3),occ(S,1)=2,occ(S,2)=2,occ(S,3)=1S=(1,2,2,1,3),occ(S,1)=2,occ(S,2)=2,occ(S,3)=1。 如果對(duì)于任意的iii,都有occ(u,i)=occ(w,i)occ(u,i)=occ(w,i)occ(u,i)=occ(w,i),那么我們認(rèn)為數(shù)字串uuu和www匹配。 例如:(1,2,2,1,3)≈(1,3,2,1,2)(1,2,2,1,3)\approx(1,3,2,1,2)(1,2,2,1,3)(1,3,2,1,2)。 對(duì)于一個(gè)數(shù)字串SSS和一個(gè)正整數(shù)kkk,如果SSS可以分成若干個(gè)長(zhǎng)度為kkk的連續(xù)子串,且這些子串兩兩匹配,那么我們稱kkk是串SSS的一個(gè)完全阿貝爾周期。 給定一個(gè)數(shù)字串SSS,請(qǐng)找出它所有的完全阿貝爾周期。 輸入描述 輸入的第一行包含一個(gè)正整數(shù)T(1≤T≤10)T(1\leq T\leq10)T(1T10),表示測(cè)試數(shù)據(jù)的組數(shù)。 對(duì)于每組數(shù)據(jù),第一行包含一個(gè)正整數(shù)n(n≤100000)n(n\leq 100000)n(n100000),表示數(shù)字串的長(zhǎng)度。 第二行包含nnn個(gè)正整數(shù)S1,S2,S3,...,Sn(1≤Si≤n)S_1,S_2,S_3,...,S_n(1\leq S_i\leq n)S?1??,S?2??,S?3??,...,S?n??(1S?i??n),表示這個(gè)數(shù)字串。 輸出描述 對(duì)于每組數(shù)據(jù),輸出一行若干個(gè)整數(shù),從小到大輸出所有合法的kkk。 輸入樣例 2 6 5 4 4 4 5 4 8 6 5 6 5 6 5 5 6 輸出樣例 3 6 2 4 8

題解:保存異或前綴異或和 ,k一定是 n的因子,所以枚舉的 k不會(huì)很多.然后每隔k個(gè)比一下當(dāng)前的異或和和前面異或和的異或值是否為0的就行了. #pragma comment(linker, "/STACK:1024000000,1024000000") #include <bits/stdc++.h> using namespace std; typedef long long LL; const int N = 100005; LL a[N],sum[N]; int factor[N],ans[N]; int main() {int tcase;scanf("%d",&tcase);while(tcase--){int n;scanf("%d",&n);memset(sum,0,sizeof(sum));for(int i=1; i<=n; i++){scanf("%I64d",&a[i]);sum[i] = sum[i-1]^a[i];}int id = 0,m = n;factor[id++] = 1;for(int i=2; i*i<=n; i++){if(n%i==0){if(i*i==n) factor[id++] = i;else{factor[id++] = n/i;factor[id++] = i;}}}factor[id++] = n;sort(factor,factor+id);int cnt = 0;bool flag = false;for(int j=0; j<id; j++){bool flag = false;int k = factor[j];for(int i=2*k; i<=n; i+=k){LL pre = sum[i]^sum[i-k],nxt;if(i>=2*k) nxt = sum[i-k]^sum[i-2*k];else nxt = sum[i-k];if((pre^nxt)!=0) {flag = true;break;}}if(!flag) ans[cnt++] = k;}flag = true;for(int i=0;i<cnt;i++){if(!flag) printf(" %d",ans[i]);else printf("%d",ans[i]);flag = false;}printf("\n");}return 0; }

?

轉(zhuǎn)載于:https://www.cnblogs.com/liyinggang/p/5926459.html

總結(jié)

以上是生活随笔為你收集整理的BestCoder #88(1001 1002)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。