在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] =maxi +1≤k ≤j−1 f[i][j]=\max_\ f[i][j ]=i+ 1≤k≤ j−1max 最後只需要返回maxi f[i] [i+n ]\max_i f[i][i+n] maxif [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人吸收能量的一種器官 的作用,這兩顆珠...