文章

4

粉丝

0

获赞

13

访问

433

头像
合并果子 题解:
P1544 中南大学机试题
发布于2026年2月21日 16:17
阅读数 42

#include<bits/stdc++.h>
using namespace std;
int main() {
    int n;
    cin >> n;
    
    // 使用最小堆(优先队列)
    priority_queue<int, vector<int>, greater<int>> pq;
    
    // 读取数据并加入优先队列
    for (int i = 0; i < n; i++) {
        int x;
        cin >> x;
        pq.push(x);
    }
    
    long long total = 0;  // 使用 long long 防止溢出
    
    // 当队列中还有多于一堆果子时
    while (pq.size() > 1) {
        // 取出最小的两堆,取出后进行出队
        int a = pq.top(); pq.pop();
        int b = pq.top(); pq.pop();
        
        // 合并两堆,记录体力耗费
        int sum = a + b;
        total += s...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发