51nod1414 冰雕(暴力列舉)
阿新 • • 發佈:2018-11-09
題目是這樣的:
白蘭大學正在準備慶祝成立256週年。特別任命副校長來準備校園的裝扮。
校園的中心豎立著n個冰雕。這些雕像被排在一個等分圓上,因此他們形成了一個正n多邊形。這些冰雕被順針地從1到n編號。每一個雕有一個吸引力t[i].
校長來看了之後表示不滿意,他想再去掉幾個雕像,但是剩下的雕像必須滿足以下條件:
· 剩下的雕像必須形成一個正多邊形(點數必須在3到n之間,inclusive),
· 剩下的雕像的吸引力之和要最大化。
請寫一個程式幫助校長來計算出最大的吸引力之和。如果不能滿足上述要求,所有雕像不能被移除。
Input
單組測試資料。 第一行輸入一個整數n(3≤n≤20000),表示初始的冰雕數目。 第二行有n個整數t[1],t[2],t[3],…,t[n],表示每一個冰雕的吸引力(-1000≤t[i]≤1000),兩個整數之間用空格分開。Output
輸出答案佔一行。Input示例
8 1 2 -3 4 -5 5 2 3 6 1 -2 3 -4 5 -6
14 9
這個題看後總想找出一個好的的解決方案,但是列舉竟然就能破解,有時候還是不要想太多的好。
本題這裡直接列舉距離編號最小的冰雕等距的冰雕的引力,計算其和,通過比較保留最大值。
程式碼:
#include<cstdio> int t[20005]; int main() { int n; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&t[i]); } int Max=-99999999; for(int i=1;i<=n/3;i++){ if(n%i==0){ for(int j=0;j<i;j++){ int sum=0; for(int k=j;k<n;k+=i){ sum+=t[k]; } if(sum>Max) Max=sum; } } } printf("%d",Max); return 0; }