luogu P1880 石子合併

2021-07-25 13:01:31 字數 1228 閱讀 7466

原題原題原題原題原題

先貼上錯誤**。。。

↓錯誤**↓

#include 

#include

#include

using

namespace

std;

int f[1100][1100],f2[1100][1100],st[1100],a[1100];

int main()

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

st[i]=st[i-1]+a[i];

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

f[i][i]=0,f2[i][i]=0;

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

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

}int maxn=f2[1][n];

int minn=f[1][n];

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

cout

0;}

↑錯誤**↑

錯誤原因已經注釋了,40分

———————————————————分—————割—————線—————————————————————

經過一番檢查,發現了這些智障錯誤,感到自己都驚呆了

↓正確**↓

#include 

#include

#include

using

namespace

std;

int f[1100][1100],f2[1100][1100],st[1100],a[1100];

int main()

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

st[i]=st[i-1]+a[i];

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

f[i][i]=0,f2[i][i]=0;

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

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

}int maxn=f2[1][n];

int minn=f[1][n];

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

cout

0;}

↑正確**↑

滿分

Luogu P1880 石子合併 題解報告

題目傳送門 題目大意 在乙個圓形操場的四周擺放n堆石子,現要將石子有次序地合併成一堆.規定每次只能選相鄰的2堆合併成新的一堆,並將新的一堆的石子數,記為該次合併的得分。試設計出1個演算法,計算出將n堆石子合併成1堆的最小得分和最大得分。思路解析 首先是斷環為鏈,這題資料不大,沒什麼問題。說一下轉移方...

Luogu P1880 石子合併 環形DP

先放上luogu的石子合併題目鏈結 這是一道環形dp題,思想和能量項鍊很像,在預處理過程中的手法跟乘積最大相像。用乙個m陣列來儲存石子數量,m i j 表示從第 i 堆石子到第 j 堆石子的總數。接下來三重迴圈 i 表示合併操作的起始位置,j 表示合併操作的終點,也就是把 i 到 j 合併 k表示間...

洛谷1880 石子合併

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