CodeVs 2102 石子歸併 2

2021-08-07 20:20:47 字數 1029 閱讀 4402

go to the problem

時間限制: 10 s  話說為什麼是10s好可怕qaq

空間限制: 256000 kb

題目等級 : ** gold

在乙個園形操場的四周擺放n堆石子,現要將石子有次序地合併成一堆.規定每次只能選相鄰的2堆合併成新的一堆,並將新的一堆的石子數,記為該次合併的得分。

試設計出1個演算法,計算出將n堆石子合併成1堆的最小得分和最大得分.

資料的第1行試正整數n,1≤n≤100,表示有n堆石子.第2行有n個數,分別表示每堆石子的個數.

輸出共2行,第1行為最小得分,第2行為最大得分.

4 4 4 5 9

43 54

經典的區間動態規劃。至於是環形,只需要再在a[n]後copy ?? 乙個a[1]~a[n]作為a[n+1]~a[2*n],最後在列舉i~i+n-1 ( i>=1&&1<=n ) 的 fmaxn 和 fminn 更新一遍答案就可以了。

**片,寫的不好請見諒…

#include

#include

#include

#include

#include

using namespace std;

int n,ans1,ans2=1025463256;

int a[210],sum[210],fminn[210][210],fmaxn[210][210];

int main()

for(int i=n+1;i<=2*n;++i) a[i]=a[i-n],sum[i]=sum[i-1]+a[i],fminn[i][i]=fmaxn[i][i]=0;

for(int i=1;i<=n*2;++i)

for(int j=i;j>=1;--j)

for(int k=j;k

for(int i=1;i<=n;++i)

ans1=max(ans1,fmaxn[i][i+n-1]),

ans2=min(ans2,fminn[i][i+n-1]);

cout}

codevs 2102 石子歸併2

時間限制 10 s 空間限制 256000 kb 題目等級 gold 在乙個園形操場的四周擺放n堆石子,現要將石子有次序地合併成一堆.規定每次只能選相鄰的2堆合併成新的一堆,並將新的一堆的石子數,記為該次合併的得分。試設計出1個演算法,計算出將n堆石子合併成1堆的最小得分和最大得分.輸入描述 inp...

Codevs 2102 石子歸併2

時間限制 10 s 空間限制 256000 kb 題目等級 gold 在乙個園形操場的四周擺放n堆石子,現要將石子有次序地合併成一堆.規定每次只能選相鄰的2堆合併成新的一堆,並將新的一堆的石子數,記為該次合併的得分。試設計出1個演算法,計算出將n堆石子合併成1堆的最小得分和最大得分.輸入描述 inp...

Codevs2102 石子歸併 2 區間DP

題目描述 description 在乙個園形操場的四周擺放n堆石子,現要將石子有次序地合併成一堆.規定每次只能選相鄰的2堆合併成新的一堆,並將新的一堆的石子數,記為該次合併的得分。試設計出1個演算法,計算出將n堆石子合併成1堆的最小得分和最大得分.輸入描述 input description 資料的...