試題 I 超級膠水

2021-10-24 20:54:51 字數 2122 閱讀 1920

時間限制: 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 可以返回物件的引用,...