設dp(l,r)為區間l~r得到的最大能量,然後列舉中間值k,可以列出狀態轉移方程:
\[dp[l][r]=max dp[l][k]+dp[k][r]+val[l]*val[k]*val[r] }
\]為了避免邊界的取模操作,我們可以任意位置斷開環,並複製乙份到後面去,然後區間dp算出每個長度為n的最優解,答案就是:max(dp(i,i+n))。
#include#include#include#define maxn 101
using namespace std;
long long dp[maxn<<1][maxn<<1],ans;
int n,val[maxn<<1];
inline int read()
while('0'<=c&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();
return x*f;
}int main()}}
for(register int i=1;i<=n;i++) ans=max(ans,dp[i][i+n]);
printf("%lld\n",ans);
return 0;
}
LUOGU P1063 能量項鍊
題目描述 在mars星球上,每個mars人都隨身佩帶著一串能量項鍊。在項鍊上有n顆能量珠。能量珠是一顆有頭標記與尾標記的珠子,這些標記對應著某個正整數。並且,對於相鄰的兩顆珠子,前一顆珠子的尾標記一定等於後一顆珠子的頭標記。因為只有這樣,通過吸盤 吸盤是mars人吸收能量的一種器官 的作用,這兩顆珠...
luogu P1063 能量項鍊
在mars星球上,每個mars人都隨身佩帶著一串能量項鍊。在項鍊上有n顆能量珠。能量珠是一顆有頭標記與尾標記的珠子,這些標記對應著某個正整數。並且,對於相鄰的兩顆珠子,前一顆珠子的尾標記一定等於後一顆珠子的頭標記。因為只有這樣,通過吸盤 吸盤是mars人吸收能量的一種器官 的作用,這兩顆珠子才能聚合...
LUOGU P1063 能量項鍊
題目描述 在mars星球上,每個mars人都隨身佩帶著一串能量項鍊。在項鍊上有n顆能量珠。能量珠是一顆有頭標記與尾標記的珠子,這些標記對應著某個正整數。並且,對於相鄰的兩顆珠子,前一顆珠子的尾標記一定等於後一顆珠子的頭標記。因為只有這樣,通過吸盤 吸盤是mars人吸收能量的一種器官 的作用,這兩顆珠...