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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

hihoCoder #1246 : 王胖浩与环 (数学)

發(fā)布時(shí)間:2023/12/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hihoCoder #1246 : 王胖浩与环 (数学) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

題意:

  有一個(gè)環(huán)形序列,可以將其切成連續(xù)的k段子序列,那么gcd( 每段子序列的和 )就是優(yōu)美程度。輸出n個(gè)整數(shù),表示當(dāng)k=[1, n] 時(shí)的最大優(yōu)美程度。?

?

思路:

  觀察一下,當(dāng)切成1段的時(shí)候,gcd就是sum[整個(gè)序列],為最大。考慮切成2段,那么最好就是能讓這個(gè)環(huán)切成2段和為sum[整個(gè)序列]/2的子序列了。考慮切成3段,那么最好就是能讓這個(gè)環(huán)切成3段和為sum[整個(gè)序列]/3的子序列了。繼續(xù)下去,這不就是求sum[整個(gè)序列]的約數(shù)嗎?

  假設(shè)約數(shù)有k個(gè),從大到小分別為factor[1~R]。那么其中有些因數(shù)是可能組不成的,得去掉那些組不成的。假設(shè)sum[整個(gè)序列]最多能切成cnt段和為factor[t]的連續(xù)子序列,那么段數(shù)i<=cnt的,答案都是factor[t]了,取最大即可。

  問題在于如何求出切成長(zhǎng)為factor[t]的最多段數(shù)cnt[t]?當(dāng)前綴和pre%factor=r出現(xiàn)了m次時(shí)應(yīng)該是這樣的: ..|xxxx|xxxx|......|xxx|xxxx|.. (共有m個(gè)切口|),觀察到除了首尾之外,其他每段都是d的倍數(shù),且首尾之和也是d的倍數(shù)(因?yàn)閟um[整個(gè)序列]=k*d)。那么對(duì)于factor[t],只需要枚舉r來求出最大的m即可。

?

?

1 #include<bits/stdc++.h> 2 #define pii pair<int,int> 3 #define INF 0x3f3f3f3f 4 #define LL long long 5 using namespace std; 6 const int N=2010; 7 vector<LL> factor, cnt; 8 LL a[N]; 9 map<LL,LL> mapp; 10 int main() 11 { 12 freopen("input.txt","r",stdin); 13 int n; 14 while(~scanf("%d",&n)) 15 { 16 for(int i=1; i<=n; i++) 17 { 18 scanf("%lld",&a[i]); 19 a[i]+=a[i-1]; 20 } 21 for(LL i=1; i*i<=a[n]; i++) 22 { 23 if(a[n]%i==0) 24 { 25 factor.push_back(a[n]/i); 26 factor.push_back(i);//多一個(gè)也不影響結(jié)果 27 } 28 } 29 sort(factor.begin(),factor.end()); 30 deque<LL> ans; 31 for(int k=factor.size()-1,i=1; k>=0; k--) 32 { 33 LL big=0, c=factor[k]; 34 mapp.clear(); 35 for(int j=1; j<=n; j++) 36 big=max(big,++mapp[a[j]%c]); 37 while(i<=n&&big>=i) 38 { 39 ans.push_back(c); 40 i++; 41 } 42 } 43 while(!ans.empty()) 44 { 45 printf("%lld\n",ans.front()); 46 ans.pop_front(); 47 } 48 } 49 return 0; 50 } AC代碼

?

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

總結(jié)

以上是生活随笔為你收集整理的hihoCoder #1246 : 王胖浩与环 (数学)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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