ACWing 320 能量項鍊

2021-10-21 14:02:20 字數 2784 閱讀 7916

在mars星球上,每個mars人都隨身佩帶著一串能量項鍊,在項鍊上有n

nn顆能量珠。能量珠是一顆有頭標記與尾標記的珠子,這些標記對應著某個正整數。並且,對於相鄰的兩顆珠子,前一顆珠子的尾標記一定等於後一顆珠子的頭標記。因為只有這樣,通過吸盤(吸盤是mars人吸收能量的一種器官)的作用,這兩顆珠子才能聚合成一顆珠子,同時釋放出可以被吸盤吸收的能量。如果前一顆能量珠的頭標記為m

mm,尾標記為r

rr,後一顆能量珠的頭標記為r

rr,尾標記為n

nn,則聚合後釋放的能量為m∗r

∗n

m*r*n

m∗r∗

n(mars單位),新產生的珠子的頭標記為m

mm,尾標記為n

nn。需要時,mars人就用吸盤夾住相鄰的兩顆珠子,通過聚合得到能量,直到項鍊上只剩下一顆珠子為止。顯然,不同的聚合順序得到的總能量是不同的,請你設計乙個聚合順序,使一串項鍊釋放出的總能量最大。例如:設n=4

n=4n=

4,44

4顆珠子的頭標記與尾標記依次為(2,

3),(

3,5)

,(5,

10),(

10,2)

(2,3), (3,5), (5,10), (10,2)

(2,3),

(3,5

),(5

,10)

,(10

,2)。我們用記號⊕

⊕⊕表示兩顆珠子的聚合操作,(j⊕

k)

(j⊕k)

(j⊕k

)表示第j

jj,k

kk兩顆珠子聚合後所釋放的能量。則第4

44、1

11兩顆珠子聚合後釋放的能量為:(4⊕

1)=10

∗2∗3

=60

(4⊕1)=10*2*3=60

(4⊕1)=

10∗2

∗3=6

0。這一串項鍊可以得到最優值的乙個聚合順序所釋放的總能量為((4

⊕1)⊕

2)⊕3

)=10∗

2∗3+

10∗3∗

5+10∗

5∗10=

710((4⊕1)⊕2)⊕3)= 10*2*3+10*3*5+10*5*10=710

((4⊕1)

⊕2)⊕

3)=1

0∗2∗

3+10

∗3∗5

+10∗

5∗10

=710

。輸入格式:

輸入的第一行是乙個正整數n

nn,表示項鍊上珠子的個數。第二行是n

nn個用空格隔開的正整數,所有的數均不超過1000

1000

1000

,第i

ii個數為第i

ii顆珠子的頭標記,當i

i<

n時,第i

ii顆珠子的尾標記應該等於第i+1

i+1i+

1顆珠子的頭標記,第n

nn顆珠子的尾標記應該等於第1

11顆珠子的頭標記。至於珠子的順序,你可以這樣確定:將項鍊放到桌面上,不要出現交叉,隨意指定第一顆珠子,然後按順時針方向確定其他珠子的順序。

輸出格式:

輸出只有一行,是乙個正整數e

ee,為乙個最優聚合順序所釋放的總能量。

資料範圍:

4 ≤n

≤100

4≤n≤100

4≤n≤1001≤

e≤

2.1∗10

91≤e≤2.1∗10^9

1≤e≤2.

1∗10

9思路是動態規劃。可以採用處理環形問題的通用技巧,即複製乙份接到後面。這裡雖然輸入是n

nn個數,但實際上我們要求的是長n+1

n+1n+

1的區間的最大能量,所以要將這n

nn個數重複一遍拼在後面,形成長2n2n

2n的陣列,這樣就轉化為了線性問題。設f[i

][j]

f[i][j]

f[i][j

]是合併區間[i,

j]

[i,j]

[i,j

]所能產生的最大能量,可以按照最後一次合併的中間值來分類,其範圍為[i+

1:j−

1]

[i+1:j-1]

[i+1:j

−1],所以有:f[i

][j]

=max⁡i

+1≤k

≤j−1

f[i][j]=\max_\

f[i][j

]=i+

1≤k≤

j−1max

​最後只需要返回max⁡i

f[i]

[i+n

]\max_i f[i][i+n]

maxi​f

[i][

i+n]

即可。**如下:

#include

using

namespace std;

const

int n =

210;

int n;

int a[n]

;int f[n]

[n];

intmain()

cout << res << endl;

return0;

}

時間複雜度o(n

3)

o(n^3)

o(n3

),空間o(n

2)

o(n^2)

o(n2)。

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人吸收能量的一種器官 的作用,這兩顆珠...