QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#109556#71. Cake 3bashkort#0 0ms0kbC++201.5kb2023-05-29 18:19:132024-05-31 13:47:24

Judging History

你现在查看的是最新测评结果

  • [2024-05-31 13:47:24]
  • 评测
  • 测评结果:0
  • 用时:0ms
  • 内存:0kb
  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-05-29 18:19:13]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;
using ll = long long;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, k;
    cin >> n >> k;

    vector<ll> V(n), C(n), V_(n), C_(n);

    for (int i = 0; i < n; ++i) {
        cin >> V[i] >> C[i];
        C[i] *= 2;
    }

    vector<int> ord(n);
    iota(ord.begin(), ord.end(), 0);
    sort(ord.begin(), ord.end(), [&](int i, int j) {
        return C[i] < C[j];
    });

    V_ = V, C_ = C;

    for (int i = 0; i < n; ++i) {
        C[i] = C_[ord[i]];
        V[i] = V_[ord[i]];
    }
    
    using db = long double;

    auto solve = [&](db penalty) { // siuuuuu
        pair<db, int> ans{-3e18, -1};
        pair<db, int> dp{-3e18, -1};

        for (int i = 0; i < n; ++i) {
            pair<db, int> now = {dp.first + V[i] - C[i] - penalty, dp.second - 1};
            ans = max(ans, now);
            now = {dp.first + V[i] - penalty, dp.second - 1};
            dp = max({dp, pair{V[i] + C[i] - penalty, -1}, now});
        }

        return pair{ans.first, -ans.second};
    };

    ll lo = -3e12, hi = 3e12;
    assert(solve(lo).second >= k && solve(hi).second <= k);

    while (lo + 0.5 < hi) {
        ll mid = (lo + hi) / 2;
        auto [dp, mink] = solve(mid);
        if (mink <= k) {
            hi = mid;
        } else {
            lo = mid;
        }
    }


    auto [dp, mink] = solve(hi);

    cout << dp + k * hi << '\n';

    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 0
Time Limit Exceeded

Test #1:

score: 0
Time Limit Exceeded

input:

100 32
671208774 266481733
115497791 342597239
326245300 76223942
528973483 754205900
437996819 995535247
100582194 42402057
771100621 351934207
89058009 81951602
768935397 186435060
842907845 376386254
187943947 59424920
997369107 493642356
455078419 68850493
542835555 938351581
970171972 611243076...

output:


result:


Subtask #2:

score: 0
Skipped

Dependency #1:

0%

Subtask #3:

score: 0
Skipped

Dependency #1:

0%