Merge(石子合併加強版)

2021-08-07 07:24:29 字數 1223 閱讀 6844

好像是削弱版

雖說是三個合併,但是不是環形的,呵呵

60分,列舉兩個斷點,4層轉換

正解先合併兩堆,在列舉合併三堆的策略

即 3=1+1+1

3=2+1

but如果無法完全合併輸出最大值,而最大值是1e9,不是maxint,我日

2、石子合併加強版(merge.pas/c/cpp)

時間限制:1s;記憶體限制:256mb

【問題描述】

還記得經典題石子合併嗎?現在小 y 將題目加強啦!

在乙個圓形操場的四周擺放著 n 堆石子,現要將石子有次序地合併成一堆。規定每次

只能選取相鄰的三堆合併成新的一堆,並將新的一堆的石子數,記為該次合併的得分。

編一程式,讀入石子堆數 n 及每堆的石子數。選擇一種合併石子的方案,使得做(n-1)/2

次合併,得分的總和最小;

【輸入檔案】

第 1 行乙個數,表示石子堆數。

第 2 行是順序排列的各堆石子數(≤1000),每兩個數之間用空格分隔。

【輸出檔案】

輸出合併的最小得分。

【樣例輸入】51

2345

【樣例輸出】

21【樣例解釋】

先合併(1

23),再合併(645)

【資料範圍】

對於 20%的資料,n=5

對於 60%的資料,n

<=80

對於 100%的資料,n

<=400

#include 

#include

#include

#include

#include

using namespace std;

int n,w[402],a[402],f1[402][402],f2[402][402];

int main()

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

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

f1[i][j]=f2[i][j]=1000000000;

//memset(f1,127/3,sizeof(f1));memset(f2,127/3,sizeof(f2));

for (int i=n;i;i--)

}printf("%d",f1[1][n]);

return 0;

}

石子合併加強版

時間限制 1s 記憶體限制 256mb 問題描述 還記得經典題石子合併嗎?現在小 y 將題目加強啦!在乙個圓形操場的四周擺放著 n 堆石子,現要將石子有次序地合併成一堆。規定每次只能選取相鄰的三堆合併成新的一堆,並將新的一堆的石子數,記為該次合併的得分 編一程式,讀入石子堆數 n 及每堆的石子數。選...

清北學堂 石子合併加強版

石子合併加強版 merge.pas c cpp 時間限制 1s 記憶體限制 256mb 問題描述 還記得經典題石子合併嗎?現在小 y 將題目加強啦!在乙個圓形操場的四周擺放著 n 堆石子,現要將石子有次序地合併成一堆。規定每次 只能選取相鄰的三堆合併成新的一堆,並將新的一堆的石子數,記為該次合併的得...

題解 烷基計數 加強版 加強版

題目傳送門 問樹大小為 n 每個節點的兒子個數 le 3 的本質不同樹的個數。不考慮兒子之間的順序。n le10 5 因為這個題跟多項式關係比較大,所以就沒有放到 polya 定理學習筆記裡面。我們可以看出,假設我們設 f x 表示答案的普通型生成函式,那麼,我們就有 f x x frac 1 個人...