ZZUOJ 10510 石子合併

2021-09-26 14:21:33 字數 1095 閱讀 8109

題目鏈結

題目大意:n堆石子,每次可以合併任意兩堆,每次合併的花費是兩堆中重量最小的乙個。問最小花費和最大花費。

解題思路:假如有三堆石子a1, a2, a3 從小到大排列,那麼會發現每次選擇最大的兩個合併最終的花費為a1+a2,並且這是最小的。對於最大花費來說,由於每次合併代價是重量最小的,所以我們選擇每次合併重量最小的兩堆,這樣就能使花費最大。

**:

1 typedef long

long

ll;2

const

int maxn = 1e5 + 5; 3

intn;

4ll a[maxn];

5 priority_queue, greater>q;67

void

solve()

14 q.push(a[n - 1

]);15

while(q.size() > 1)21

22 printf("

%lld %lld\n

", ans1, ans2);23}

24int

main()

題目:time limit: 1 sec  memory limit: 128 mb

submit: 48  solved: 12

[submit][status][web board]

聰明 和 不聰明 要合併n堆石子使之成為一堆,他們每次只能合併其中的兩堆石子,合併石子的體力花費是兩堆石子質量中的較小值,即min(ai,aj),聰明 很聰明,他可以花費最少體力來把石子合併成一堆,不聰明 比較無腦,在合併石子的時候不會考慮很多,現在希望你能求出 聰明 合併這n堆石子的花費,以及 不聰明 在最壞情況下合併這n堆石子的體力花費。

第一行乙個整數n  (1<=n<=10^5)

第二行n個整數,表示a1 a2 ... an. (1<=ai<=10^6)

輸出一行兩個整數x y,x為聰明的花費,y為不聰明最壞情況下的花費。

4

1 1 2 3

4 6

jxd

282 石子合併

設有n堆石子排成一排,其編號為1,2,3,n。每堆石子有一定的質量,可以用乙個整數來描述,現在要將這n堆石子合併成為一堆。每次只能合併相鄰的兩堆,合併的代價為這兩堆石子的質量之和,合併後與這兩堆石子相鄰的石子將和新堆相鄰,合併時由於選擇的順序不同,合併的總代價也不相同。例如有4堆石子分別為 1 3 ...

2298 石子合併

2008年省隊選拔賽山東 時間限制 1 s 空間限制 256000 kb 題目等級 gold 在乙個操場上擺放著一排n堆石子。現要將石子有次序地合併成一堆。規定每次只能選相鄰的2堆石子合併成新的一堆,並將新的一堆石子數記為該次合併的得分。試設計乙個演算法,計算出將n堆石子合併成一堆的最小得分。輸入描...

3 3 石子合併問題

問題描述 在乙個圓形操場的四周擺放著 n 堆石子。現要將石子有次序地合併成一堆。規定每次只 能選相鄰的 2 堆石子合併成新的一堆,並將新的一堆石子數記為該次合併的得分。試設計一 個演算法,計算出將 n 堆石子合併成一堆的最小得分和最大得分。程式設計任務 對於給定 n 堆石子,程式設計計算合併成一堆的...