題意: 給你乙個 含有 n 個珠子的項鍊,規定只有相鄰的珠子才能合到一起並得到能量,合到一起的到的新的珠子,可以和其相鄰的珠子繼續合成,前後次序沒有要求,
問你最大能的到多大的能量;
分析 :用 dp[i][j]來表示從 i 到 j 合成得到的最大能量,則狀態轉移方程為
dp[i][j]=max(dp[i][j],dp[i][k]+dp[k][j]+a[i].left*a[k].right*a[j].right)
通過列舉 i 和 j 的分割點來得到 dp[i][j]的最大值。
view code
#include#include#define max(a,b)(a)>(b)?a:b
struct
node
a[202
];int dp[203][203
];int
main()
memset(dp,
0,sizeof
(dp));
for(k=1;k)
for(i=1;i+k<=2*n;i++)
for(j=i+1;j<=i+k;j++)
dp[i][i+k]=max(dp[i][i+k],dp[i][j-1]+dp[j][i+k]+a[i].left*a[j].left*a[i+k].right);
max=0
;
for(i=1;i<=n;i++)
if(dp[i][i+n-1]>max)
max=dp[i][i+n-1
]; printf(
"%d\n
",max);
}return0;
}
HRBUST 1376 能量項鍊 DP
description 在mars星球上,每個mars人都隨身佩帶著一串能量項鍊。在項鍊上有n顆能量珠。能量珠是一顆有頭標記與尾標記的珠子,這些標記對應著某個正整數。並且,對於相鄰的兩顆珠子,前一顆珠子的尾標記一定等於後一顆珠子的頭標記。因為只有這樣,通過吸盤 吸盤是mars人吸收能量的一種器官 的...
1154 能量項鍊
題目描述 description 在mars星球上,每個mars人都隨身佩帶著一串能量項鍊。在項鍊上有n顆能量珠。能量珠是一顆有頭標記與尾標記的珠子,這些標記對應著某個正整數。並且,對於相鄰的兩顆珠子,前一顆珠子的尾標記一定等於後一顆珠子的頭標記。因為只有這樣,通過吸盤 吸盤是mars人吸收能量的一...
wikioi 能量項鍊
這是石子歸併的加強版,基本就是分治法的dp。但是有了個環,因為任何乙個位置都可開始,所以就建立2 n的陣列,然後對可能的區間遍歷一次,就是o n 3 的複雜度。中間錯誤的地方有 把dp i,j 錯誤寫成f i j k不能等於i,也不能等於j 把a i a k a j 錯寫成i k j include...