zjnu 1182 能量項鍊

2021-07-04 19:42:41 字數 933 閱讀 7903

這道題和石子歸併其實是同樣的題目。

題意:(那邊寫的不是很清楚)

首先給你n個珠子,每個珠子都有兩個屬性,分別是頭標記與尾標記,然後分別給出n個數,分別代表的是這些珠子的頭標記。

前一顆珠子的尾標記一定等於後一顆珠子的頭標記。如果前一顆能量珠的頭標記為m,尾標記為r,後一顆能量珠的頭標記為r,尾標記為n,則聚合後釋放的能量為m×r×n,新產生的珠子的頭標記為m,尾標記為n。

因為不同聚合方式產生的能量不同,問你最多能夠產生多少能量。

思路:感覺和石子歸併很像。但是因為這裡是乙個圈,所以我們把它轉化為乙個鏈來進行操作。

我們可以將這條鏈延長2倍,擴充套件成2n-1堆。(這樣我們就使最後乙個與第乙個連起來了)

其中第1堆與第n+1堆完全相同,第i堆與n+i堆完全相同。這樣我們只需對這2n堆進行動態規劃後。列舉dp(1,n),dp(2,n),....dp(n,2n-1)去最優值即可。

感想:這道題讓我收穫最大的就是利用把環變成鏈的方式,然後就可以簡化問題了。

#include#include#include#include#include#include#include#includeusing namespace std;

#define inf 99999999

#define maxn 222

int s[maxn],a[maxn],dp[maxn][maxn];

int main()

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

else if(i==n)

else

} int maxx=-1;

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

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

printf("%d\n",maxx);}/*

42 3 5 10

*/

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

(動態規劃)能量項鍊

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