環形區間DP

2022-04-30 23:12:21 字數 2059 閱讀 1317

區間dp的一般思考方式是:先列舉長度,再列舉開頭和結尾,再列舉中間的分割點

環形區間dp一般是把環展開成鏈後複製成兩倍,再做線性的區間dp

1068. 環形石子合併

將 n 堆石子繞圓形操場排放,現要將石子有序地合併成一堆。

規定每次只能選相鄰的兩堆合併成新的一堆,並將新的一堆的石子數記做該次合併的得分。

請編寫乙個程式,讀入堆數 n 及每堆的石子數,並進行如下計算:

選擇一種合併石子的方案,使得做 n−1 次合併得分總和最大。

選擇一種合併石子的方案,使得做 n−1 次合併得分總和最小。

輸入格式

第一行包含整數 n,表示共有 n 堆石子。

第二行包含 n 個整數,分別表示每堆石子的數量。

輸出格式

輸出共兩行:

第一行為合併得分總和最小值,

第二行為合併得分總和最大值。

資料範圍

1≤n≤200

輸入樣例:

44 5 9 4

輸出樣例:

4354

#includeusing namespace std;

const int n=401;

int w[n],f[n][n],g[n][n],sum[n];

int main()

for(int i=1;i<=2*n;++i) sum[i]=sum[i-1]+w[i];

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

int ans1=0x3f3f3f3f,ans2=-0x3f3f3f3f;

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

cout<320. 能量項鍊

在mars星球上,每個mars人都隨身佩帶著一串能量項鍊,在項鍊上有 n 顆能量珠。

能量珠是一顆有頭標記與尾標記的珠子,這些標記對應著某個正整數。

並且,對於相鄰的兩顆珠子,前一顆珠子的尾標記一定等於後一顆珠子的頭標記。

因為只有這樣,通過吸盤(吸盤是mars人吸收能量的一種器官)的作用,這兩顆珠子才能聚合成一顆珠子,同時釋放出可以被吸盤吸收的能量。

如果前一顆能量珠的頭標記為m,尾標記為r,後一顆能量珠的頭標記為 r,尾標記為 n,則聚合後釋放的能量為 mrn(mars單位),新產生的珠子的頭標記為 m,尾標記為 n。

需要時,mars人就用吸盤夾住相鄰的兩顆珠子,通過聚合得到能量,直到項鍊上只剩下一顆珠子為止。

顯然,不同的聚合順序得到的總能量是不同的,請你設計乙個聚合順序,使一串項鍊釋放出的總能量最大。

例如:設n=4,4顆珠子的頭標記與尾標記依次為(2,3) (3,5) (5,10) (10,2)。

我們用記號⊕表示兩顆珠子的聚合操作,(j⊕k)表示第 j,k 兩顆珠子聚合後所釋放的能量。則

第4、1兩顆珠子聚合後釋放的能量為:(4⊕1)=1023=60。

這一串項鍊可以得到最優值的乙個聚合順序所釋放的總能量為((4⊕1)⊕2)⊕3)= 1023+1035+10510=710。

輸入格式

輸入的第一行是乙個正整數 n,表示項鍊上珠子的個數。

第二行是n個用空格隔開的正整數,所有的數均不超過1000,第 i 個數為第 i 顆珠子的頭標記,當i思路:對於樣例\((2,3) (3,5) (5,10) (10,2)\),可以模擬成\(2,3,5,10,2\),即變成乙個n+1長度的鏈,合併的最小區間長度是3,被合併的最小區間是2,答案是\(max(f[i][i+n])\),以及在有乙個交集的區間上做合併,於是環形問題就模擬成\(2,3,5,10,2,3,5,10\),狀態轉移方程\(f[l,r]=max(f[l][k]+f[k][r]+w[l]*w[k]*w[r]),k>l,k

#includeusing namespace std;

const int n=210;

int w[n],f[n][n];

int main()}}

int res=0;

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

}

環形區間DP 環形石子合併

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

環形石子合併(區間DP)

題目描述 將 n 堆石子繞圓形操場排放,現要將石子有序地合併成一堆。規定每次只能選相鄰的兩堆合併成新的一堆,並將新的一堆的石子數記做該次合併的得分。請編寫乙個程式,讀入堆數 n 及每堆的石子數,並進行如下計算 選擇一種合併石子的方案,使得做 n 1 次合併得分總和最大。選擇一種合併石子的方案,使得做...

能量項鍊 環形區間dp

題目鏈結 在mars星球上,每個mars人都隨身佩帶著一串能量項鍊。在項鍊上有n顆能量珠。能量珠是一顆有頭標記與尾標記的珠子,這些標記對應著某個正整數。並且,對於相鄰的兩顆珠子,前一顆珠子的尾標記一定等於後一顆珠子的頭標記。因為只有這樣,通過吸盤 吸盤是mars人吸收能量的一種器官 的作用,這兩顆珠...