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 資料的...