題目鏈結:
題目大意:n堆石子,每次可以合併任意兩堆,每次合併的花費是兩堆中重量最小的乙個。問最小花費和最大花費。
解題思路:假如有三堆石子a1, a2, a3 從小到大排列,那麼會發現每次選擇最大的兩個合併最終的花費為a1+a2,並且這是最小的。對於最大花費來說,由於每次合併代價是重量最小的,所以我們選擇每次合併重量最小的兩堆,這樣就能使花費最大。
**:
1 typedef longlong
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為不聰明最壞情況下的花費。
41 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 堆石子,程式設計計算合併成一堆的...