1154 能量項鍊 區間dp 最優矩陣鏈乘

2021-08-15 12:52:18 字數 933 閱讀 9820

傳送門

題目大意:這是中文題, 自己看吧……

解題思路:

1.首先項鍊是個環, 為了方便複製乙份,變為長度乘以2, 這樣就避免了計算環.

2.我們只需知道每一段能釋放的最大能量,就可以知道總的最大釋放能量

3.定義:

表示從第i個開始到第j個能量珠最大能釋放的能量.

則遞推公式為:

為什麼是 i , k+1 , j+1 呢, 這個地方糾結了好一會, 不妨看一下題目給的樣例, 2 3 5 10

當我們列舉到i = 1 j = 3 的時候, 那麼能量珠為 (2,3) (3,5) (5, 10) 那麼這些結合後 第乙個和第二個結合之後為 (2, 5), 第二個和第三個結合後為 (3, 10), 那麼再結合的時候應該是 2 * 5 * 10 .

**:

#include #include #include using namespace std;

int a[220];

int dp[205][205];

int main()

{ int ans = 0, n;

scanf("%d", &n);

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

scanf("%d", &a[i]);

for(int i=1; i<=n; ++i) a[i+n] = a[i];

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

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

{ int r = i+len-1;

for(int k=i; k

Codevs1154 能量項鍊 區間DP

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

1154 能量項鍊

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

codevs1154能量項鍊 環形區間DP 細節

中文題。題意略 我們知道每次列舉最後合併哪兩個。於是列舉中間節點k 我犯的錯誤是將轉移方程寫成了,dp l r max dp l r dp l k dp k 1 r a l a k 1 a k 2 然而我們知道,dp l k 的頭和尾是 l,k 1 dp k 1 r 的頭和尾是 k 1,r 1 我居...