洛谷 P1880 NOI1995 石子合併

2022-05-16 11:46:15 字數 739 閱讀 7940

鏈結

思路區間dp,只不過是環上的,把整個序列複製乙份就好了。

dp[l][r]表示l到r的最大/小值,狀態轉移方程就是dp[l][r]=max/min

5455

inta[m];

56int

sum[m];

57int dp_max[1005][1005

];58

int dp_min[1005][1005

];59

intminn,maxn;

60int

main()

6169

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

7475

for(int len=2;len<=n;len++)

82 dp_min[l][r]+=(sum[r]-sum[l-1

]);83 dp_max[l][r]+=(sum[r]-sum[l-1

]);84}85

}8687 minn=inf;maxn=-inf;

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

9293 cout94return0;

95 }

備註急需一名oi爺帶我進final

洛谷 P1880 NOI1995 石子合併

這道題是之前石子合併的加強板 不同在於是乙個環 處理方法就是把陣列 乘以2,列舉起點轉化成鏈。以後這種環的問題應該都可以這樣來轉化。陣列空間不要忘了乘以2 然後要注意區間從長度為2開始,初始化為最大或最小 注意這裡的得分是合併之後的得分,所以單獨一堆是沒有得分的。include include in...

洛谷 P1880 NOI1995 石子合併

在乙個圓形操場的四周擺放n堆石子,現要將石子有次序地合併成一堆.規定每次只能選相鄰的2堆合併成新的一堆,並將新的一堆的石子數,記為該次合併的得分。試設計出1個演算法,計算出將n堆石子合併成1堆的最小得分和最大得分.輸入格式 資料的第1行試正整數n,1 n 100,表示有n堆石子.第2行有n個數,分別...

洛谷P1880 NOI1995 石子合併 題解

在乙個圓形操場的四周擺放n堆石子,現要將石子有次序地合併成一堆.規定每次只能選相鄰的2堆合併成新的一堆,並將新的一堆的石子數,記為該次合併的得分。試設計出1個演算法,計算出將n堆石子合併成1堆的最小得分和最大得分.輸入格式 資料的第1行試正整數n,1 n 100,表示有n堆石子.第2行有n個數,分別...