時間限制: 1.0s 記憶體限制: 256.0mb 本題總分:25 分
【問題描述】
小明有 n 顆石子,按順序擺成一排。他準備用膠水將這些石子粘在一起。
每顆石子有自己的重量,如果將兩顆石子粘在一起,將合併成一顆新的石
子,重量是這兩顆石子的重量之和。
為了保證石子貼上牢固,貼上兩顆石子所需要的膠水與兩顆石子的重量乘
積成正比,本題不考慮物理單位,認為所需要的膠水在數值上等於兩顆石子重
量的乘積。
每次合併,小明只能合併位置相鄰的兩顆石子,並將合併出的新石子放在
原來的位置。
現在,小明想用最少的膠水將所有石子粘在一起,請幫助小明計算最少需
要多少膠水。
【輸入格式】
輸入的第一行包含乙個整數 n,表示初始時的石子數量。【輸出格式】第二行包含 n 個整數 w1,w2, · · · ,wn,依次表示每顆石子的重量。
輸出一行包含乙個整數,表示最少需要的膠水數。【樣例輸入】
334
5
【樣例輸出】
47
【樣例輸入】
815
2637
48
【樣例輸出】
546
【評測用例規模與約定】
對於 20% 的評測用例,1 ≤ n ≤ 15。對於 60% 的評測用例,1 ≤ n ≤ 100。
對於 80% 的評測用例,1 ≤ n ≤ 1000。
對於所有評測用例,1 ≤ n ≤ 100000,1 ≤ wi ≤ 1000。
n=
int(
input()
)num_lis=
list
(map
(int
,input()
.strip(
).split())
)def
f(num_lis)
: re=num_lis[0]
*num_lis[1]
re_index=
0for i in
range
(len
(num_lis)-1
):if num_lis[i]
*num_lis[i+1]
re= num_lis[i]
*num_lis[i+1]
re_index=i
return re_index
res=
0while
true:if
len(num_lis)==1
:break
re_index=f(num_lis)
if re_index+
2<
len(num_lis)
: res+=num_lis[re_index]
*num_lis[re_index+1]
num_lis=num_lis[
:re_index]
+[num_lis[re_index]
+num_lis[re_index+1]
]+num_lis[re_index+2:
]else
: res+=num_lis[re_index]
*num_lis[re_index+1]
num_lis=num_lis[
:re_index]
+[num_lis[re_index]
+num_lis[re_index+1]
]print
(res)
815
2637
48546
引導塊,超級快,i節點表
引導塊 位於檔案卷最開始的第一扇區,這512 位元組是檔案系統的引導 為根檔案系統所特有,其他檔案系統這512 位元組為空。資料恢復 超級塊 superblock 資料恢復 乙個檔案系統總是由它的超級塊來定義的,所以建立檔案系統的同時超級塊也被建立。它包含了檔案系統的一些基本引數,例如檔案系統中的資...
試題 I 整數拼接
試題 i 整數拼接 給定義個長度為 n 的陣列 a1,a2,an你可以從中選出兩個數 ai 和 aj i 不等於 j 然後將 ai 和 aj 一前一後拼成乙個新的整數。例如 12 和 345 可以拼成 12345 或 34512。注意交換 ai 和 aj 的順序總是被視為 2 種拼法,即便是 ai ...
面試題 i 和 i哪個效率更高
include int main 簡單地比較字首自增運算子和字尾自增運算子的效率是片面的,因為存在很多因素影響這個問題的答案。考慮內建資料型別的時候,它們的效率差別不大 去除編譯器的影響 考慮自定義資料型別 主要是指類 的情況。此時我們不需要再做很多彙編 的分析,因為字首式 i 可以返回物件的引用,...