原題原題原題原題原題
先貼上錯誤**。。。
↓錯誤**↓
#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個數,分別...