NOIP2006 提高組 能量項鍊

2021-08-20 07:25:34 字數 854 閱讀 7513

–首先,我們肯定要把每個珠子都聚合是能量最大的基礎,而對於這個環,我們可以在輸入時預處理成這個樣子:

1 2 3 4 1 2 3

然後發現這個環的所有遍歷情況變得很簡單:以某個為起點,向後取n個就行

–現在,我們只要發現這是個區間dp就行了

f[i][j]表示,從 i 到 j 這個區間內聚合的最大值

對於每個區間,可以從中間的 k 點斷開變為兩段小的,加上聚合這兩段的能量之和

所以狀態轉移方程:f[i][j]=max(f[i][j],f[i][k]+e[i]*e[k+1]*e[j+1]+f[k][j])

完結,✿✿ヽ(°▽°)ノ✿

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn=205;

int n,e[maxn];

long

long f[maxn][maxn];

long

long ans;

int main()

e[0]=e[n];

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

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

ans=max(ans,f[i][i+n-1]);

cout

0;}

NOIP2006 提高組 能量項鍊

話不多說,上題 該題正解區間dp,什麼是區間dp呢,可以用這道題來來說明 用dp i j 表示從i到j的最大值。和其他題有點不同的是 這道題需要求乙個環的最大值,其他的就是很普通的區間dp了。include using namespace std int a 205 n int f 1005 100...

NOIP2006(能量項鍊)

program energy var n,m longint head,tail array 1.200 of longint head i 與tail i 分別表示第i個珠子的頭標記與第i個珠子的尾標記。f array 1.200,1.200 of longint f i,j 表示從第i個珠子到第...

NOIP 2006 能量項鍊

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