NOIP2006 能量項鍊

2022-07-16 19:57:17 字數 675 閱讀 7544

額,和石子合併好像的qwq。

的確和石子合併很像,我們定義狀態dp[i][j]表示從第i顆到第j顆所能釋放的最大能量,顯然,dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]+head[i]*tail[k]*tail[j]),可以認為是先將i到k合併成一顆珠子,再將k+1到j合併成一顆珠子,最後將兩顆珠子合併(石子合併也可以這樣想)。和石子合併一樣,這裡的珠子成了環,因此可以開兩倍的陣列,來處理。注意,這樣在列舉左端點時i,是從1到2*n-i(2*n用不到)。

1 #include2 inline int max(int a,int b) 

3const

int maxn=105;4

int n,head[2*maxn],tail[2*maxn],dp[2*maxn][2*maxn],ans;

5int

main()

8for(int i=1;i<=n;++i) tail[i]=i==n?head[1]:head[i+1],tail[n+i]=tail[i];

9for(int l=2;l<=n;++l)

10for(int i=1;i<=2*n-l;++i)

16 printf("%d"

,ans);

17return0;

18 }

ac**

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...

NOIP2006 提高組 能量項鍊

首先,我們肯定要把每個珠子都聚合是能量最大的基礎,而對於這個環,我們可以在輸入時預處理成這個樣子 1 2 3 4 1 2 3 然後發現這個環的所有遍歷情況變得很簡單 以某個為起點,向後取n個就行 現在,我們只要發現這是個區間dp就行了 f i j 表示,從 i 到 j 這個區間內聚合的最大值 對於每...