2023年東莞小學競賽試題四 石子歸併

2021-07-31 05:15:55 字數 1396 閱讀 9580

2023年東莞小學競賽試題四 石子歸併

time limit:5000ms memory limit:65536k

total submit:124 accepted:37

description

在乙個建築工地上有許多堆石子,為了建築的需要,要把所有的石子合成一堆。

每一次合併,可以把兩堆石子合併到一起,得到新的一堆石子,新堆石子的重量等於原來兩堆石子的重量的和,合併這兩堆石子消耗的體力等於原來兩堆石子的重量之和。可以看出,所有的石子經過n-1次合併之後,就只剩下一堆了。在合併石子時總共消耗的體力等於每次合併所耗體力的和。

假定已知每堆石子的重量,你的任務是設計出合併的次序方案,使合併石子時耗費的體力最少,輸出這個最小的體力耗費值。

例如有3堆石子,每堆石子的重量依次為2,8,5。可以先將1、3堆合併,新堆的重量為7,耗費體力為7。接著,將新堆與原先的第二堆合併,又得到新的堆,重量為15,耗費體力為15。所以總共耗費體力=7+15=22。可以證明22為最小的體力耗費值。

input

包括兩行,第一行是乙個整數n(1<=n<=10000),表示原來石子的堆數。第二行包含n個整數,用空格分隔,第i個整數ai(1<=ai<=20000)是第i堆石子的重量。

output

只有乙個整數,表示最小的體力耗費值。輸入資料保證這個值小於2^31。

sample input

3 2 8 5

sample output

22

var

f:array[0..101,0..101]of longint;

a,s:array[0..101]of longint;

n,i,j,k:longint;

function

min(a,b:longint):longint;

begin

if a>b then

exit(b);

exit(a);

end;

begin

read(n);

for i:=1

to n do

read(a[i]);

for i:=1

to n do

s[i]:=s[i-1]+a[i];

fillchar(f,sizeof(f),$7f div

3); for i:=1

to n do

f[i,i]:=0;

for i:=n downto1do

for j:=i+1

to n do

for k:=i to j-1

do f[i,j]:=min(f[i,j],f[i,k]+f[k+1,j]+s[j]-s[i-1]);

write(f[1,n]);

end.

2023年東莞市小學生資訊學競賽試題 17倍

題目描述 學習程式設計的lanlan記得老師給她布置的第乙個任務是 輸入乙個數n,然後輸出17 n的值。當然這個任務非常簡單,經過一段時間的學習,蘭蘭有了一些的進步,老師又布置了乙個類似的任務,只是變更了乙個條件,輸入的n是乙個二進位制數,輸出的值也要是二進位制表示的。現在請幫助lanlan完成這個...

2018北京小學生資訊學科普競賽試題點評

今年的題量與往年一樣。都是五道題。第1題是近十三屆比賽中最難的。往年的第一題,往往就是求一下兩個數的積,或者字串原樣輸出。而今年的第1題,則需要求開方和平方,難度明顯增大了很多。難度相當於往年的第二題。第2題的核心在於求回文串。需要寫乙個for或while迴圈,然後定義兩個位置,乙個從前往中間,乙個...

全國論壇斑竹2023年統一考試試題

第一大題 選擇 1 假如有在帖上問菸灰落在鍵盤上,該如何辦?你回帖 a 繼續工作 b 報警 c 水泡 d 吹 正確答案c,把選d者清理出考場 把選a的全部清理出場,選d加一分,e加二分,bc也可 3 光協 的意義是什麼 a 光棍協會 b 光頭協會 c 廣告協會 d 光棍的老婆協會 d,有選a者清理出...