題目連結: https://tioj.ck.tp.edu.tw/problems/1424
# 內容
小智目前手上共有張集點卡,為了換取最高價值的獎品,決定尋求科技公司的協助,將這些集點卡上的所有點數合併到單一集點卡上。然而,這家科技公司的服務有兩項規定:1) 一次只能合併兩張集點卡,2) 每次進行合併時,需收取和合併後點數相同數目的手續費。
# 思路
跟這題一模一樣
# 程式碼
#include <iostream> | |
#include <queue> | |
using namespace std; | |
int main(){ | |
int n, temp, ans; | |
priority_queue <int, vector<int>, greater<int> > pq; | |
while (cin >> n){ | |
ans = 0; | |
for (int i = 0; i < n; i++){ | |
cin >> temp; | |
pq.push(temp); | |
} | |
while (pq.size() > 1){ | |
temp = pq.top(); | |
pq.pop(); | |
temp += pq.top(); | |
pq.pop(); | |
ans += temp; | |
pq.push(temp); | |
} | |
cout << ans << "\n"; | |
} | |
return 0; | |
} |