P1880 NOI1995 石子合併(區間dp)

2021-08-28 16:04:32 字數 496 閱讀 8391

題意:一串環形的數,每相鄰的兩個數可以合併,加上價值,價值是兩個數的和,求最大和最小價值。

思路:區間dp板子,有一點要注意因為是環形的數,首位和末尾也是可以合併的,因此可以將原陣列,再往後加一遍。

就變成鏈型的了。

#includeusing namespace std;

#define ll long long

ll a[206],b[206],dp[206][206],d[206][206];

int main()

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

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

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

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

if(d[i][i+n-1]}

printf("%lld\n%lld\n",ww,w);

return 0;

}

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個數,分別表示每堆石...

P1880 NOI1995 石子合併

這次還是給大家講解一下dp 我們則需要根據這個題目的實際含義進行變通即可.而區間dp的大致模板是 for int len 2 len n len for int i 1 i len 1 n i 那講到這裡就很自然 一點都不自然 的引入了今天我們要看的一道題,剛才我已經說了最長不下降子串行是線性dp的...