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

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

生活随笔

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

编程问答

HDU 5908 Abelian Period 暴力

發(fā)布時(shí)間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU 5908 Abelian Period 暴力 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Abelian Period

題目連接:

http://acm.hdu.edu.cn/showproblem.php?pid=5908

Description

Let S be a number string, and occ(S,x) means the times that number x occurs in S.

i.e. S=(1,2,2,1,3),occ(S,1)=2,occ(S,2)=2,occ(S,3)=1.

String u,w are matched if for each number i, occ(u,i)=occ(w,i) always holds.

i.e. (1,2,2,1,3)≈(1,3,2,1,2).

Let S be a string. An integer k is a full Abelian period of S if S can be partitioned into several continous substrings of length k, and all of these substrings are matched with each other.

Now given a string S, please find all of the numbers k that k is a full Abelian period of S.

Input

The first line of the input contains an integer T(1≤T≤10), denoting the number of test cases.

In each test case, the first line of the input contains an integer n(n≤100000), denoting the length of the string.

The second line of the input contains n integers S1,S2,S3,...,Sn(1≤Si≤n), denoting the elements of the string.

Output

For each test case, print a line with several integers, denoting all of the number k. You should print them in increasing order.

Sample Input

2
6
5 4 4 4 5 4
8
6 5 6 5 6 5 5 6

Sample Output

3 6
2 4 8

Hint

題意

設(shè)S是一個(gè)數(shù)字串,定義函數(shù)occ(S,x)表示S中數(shù)字x的出現(xiàn)次數(shù)。

例如:S=(1,2,2,1,3),occ(S,1)=2,occ(S,2)=2,occ(S,3)=1。

如果對(duì)于任意的i,都有occ(u,i)=occ(w,i),那么我們認(rèn)為數(shù)字串u和w匹配。

例如:(1,2,2,1,3)≈(1,3,2,1,2)

對(duì)于一個(gè)數(shù)字串S和一個(gè)正整數(shù)k,如果S可以分成若干個(gè)長(zhǎng)度kk的連續(xù)子串,且這些子串兩兩匹配,那么我們稱(chēng)k是串S的一個(gè)完全阿貝爾周期。

給定一個(gè)數(shù)字串S,請(qǐng)找出它所有的完全阿貝爾周期。

題解:

枚舉k,首先k必須是n的約數(shù),然后就能算出每個(gè)數(shù)字應(yīng)該出現(xiàn)多少次,O(n)檢驗(yàn)即可。

代碼

#include<bits/stdc++.h> using namespace std; const int maxn = 1e5+7; int ok[maxn],a[maxn],c1[maxn],c2[maxn],n; bool check(int x) {memset(c1,0,sizeof(c1));memset(c2,0,sizeof(c2));for(int i=1;i<=x;i++)c1[a[i]]++;for(int i=2;i<=n/x;i++){int l=(i-1)*(x)+1;int r=i*(x);for(int j=l;j<=r;j++){c2[a[j]]++;if(c2[a[j]]>c1[a[j]])return 0;}for(int j=l;j<=r;j++)c2[a[j]]--;}return 1; } void solve() {scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]);memset(ok,0,sizeof(ok));for(int i=1;i<=n;i++){if(n%i==0&&!ok[i]){if(check(i)){for(int j=i;j<=n;j+=i)if(n%j==0)ok[j]=1;}}}int fi=0;for(int i=1;i<=n;i++){if(ok[i]){if(fi==0)printf("%d",i),fi=1;else printf(" %d",i);}}printf("\n"); } int main() {int t;scanf("%d",&t);while(t--)solve();return 0; }

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

與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的HDU 5908 Abelian Period 暴力的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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