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者清理出...