題目連結: 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;
}
更新於 閱讀次數

用實際行動犒賞爆肝的我😀

Zrn Ye LinePay

LinePay