51nod 1414 冰雕 思維 暴力

2021-07-25 14:55:02 字數 1254 閱讀 2733

1414 冰雕

codeforces

基準時間限制:1 秒 空間限制:131072 kb 分值: 20 

難度:3級演算法題

白蘭大學正在準備慶祝成立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

61 -2 3 -4 5 -6

output示例

14

9

思路:1、想要在乙個等分圓上取點作為正多邊形,那麼不難想到,其選擇的點的個數一定是n的因子數才行。

2、那麼我們預處理出n的所有因子,接下來考慮:如何確定選擇的每兩個點之間的距離呢?對於n的因子1來講,其能夠確定要選擇n/1=n個點,那麼每兩個點之間的距離為1.

如果對於n的因子2來講,(假設此時n=6),那麼要確定選擇n/2=3個點,那麼每兩個點之間的距離為2.那麼我們不難遞推出,對應乙個因子i,一共要選n/i個點,每兩個點之間距離為i.

3、那麼接下來暴力維護即可,注意省略掉不必要的操作部分,注意初始化要足夠小。

ac**:

#include#include#include#includeusing namespace std;

int yinzi[100040];

int a[200060];

int main()

{ int n;

while(~scanf("%d",&n))

{for(int i=0;i=3)

{int tmp=yinzi[i];

for(int j=0;j

51NOD 1414 冰雕 思維

1.0 秒 131,072.0 kb 20 分 3級題白蘭大學正在準備慶祝成立256周年。特別任命副校長來準備校園的裝扮。校園的中心豎立著n個冰雕。這些雕像被排在乙個等分圓上,因此他們形成了乙個正n多邊形。這些冰雕被順針地從1到n編號。每乙個雕有乙個吸引力t i 校長來看了之後表示不滿意,他想再去掉...

51Nod 1414 冰雕問題

白蘭大學正在準備慶祝成立256周年。特別任命副校長來準備校園的裝扮。校園的中心豎立著n個冰雕。這些雕像被排在乙個等分圓上,因此他們形成了乙個正n多邊形。這些冰雕被順針地從1到n編號。每乙個雕有乙個吸引力t i 校長來看了之後表示不滿意,他想再去掉幾個雕像,但是剩下的雕像必須滿足以下條件 剩下的雕像必...

51nod 1414 冰雕 思路 暴力模擬題

題意是現在有n個雕像把乙個圓等分了,每乙個雕像有乙個吸引力。叫你不移動雕像只去掉雕像讓剩下的雕像還能等分這個圓,求剩下的雕像的吸引力之和的最大值。顯然去掉後剩下雕像的間隔應該是n的因子,因為這樣才能使剩下的雕像等分圓。這道題資料量不大,可以暴力列舉,模擬出每一種情況取最大值就可以了。現在我們分析完這...