这有什么问题???
查看原帖
这有什么问题???
1043593
jh2023楼主2024/7/23 21:48
#include <bits/stdc++.h>
using namespace std;
struct node
{
    long long w, len;
    node() {
        this->w = 0;
        this->len = 0;
    }
};
priority_queue<node> q;
bool operator<(node a, node b) {
    if (a.w < b.w) {
        return true;
    } else if (a.w == b.w) {
        if (a.len < b.len) {
            return true;
        }
    }
}

int n, k;
long long ans;
int main() {
    cin >> n >> k;
    for (int i = 1; i <= n; i++) {
        node user;
        cin >> user.w;
        q.push(user);
    }
    while ((n - 1) % (k - 1) != 0) {
        node s;
        q.push(s);
    }
    while (q.size() > 1) {
        long long maxlen = 0, sum = 0;
        for (int i = 1; i <= k; i++) {
            maxlen = max(maxlen, q.top().len);
            sum += q.top().w;
            q.pop();
        }
        ans += sum;
        node temp;
        temp.len = maxlen + 1;
        temp.w = sum;
        q.push(temp);
    }
    cout << ans << endl << q.top().len << endl;
    return 0;
}

2024/7/23 21:48
加载中...