QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#783559#7739. KnapsackwpoemWA 1ms4240kbC++231.4kb2024-11-26 10:37:352024-11-26 10:37:35

Judging History

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

  • [2024-11-26 10:37:35]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:4240kb
  • [2024-11-26 10:37:35]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
#define sz(x) (signed)size(x)
#define w first
#define v second

void solve() {
    int n, W, k;
    cin >> n >> W >> k;

    vector<pii> items(n + 1);
    for (int i = 1; i <= n; ++i)
        cin >> items[i].w >> items[i].v;

    sort(items.begin() + 1, items.end(), [](const auto& x, const auto& y) {
            if (x.v != y.v) return x.v < y.v;
            return x.w > y.w;
            });

    vector dp(n + 1, vector<ll>(W + 1, - 1e18));
    dp[0][0] = 0;

    for (int i = 1; i <= n; ++i) {
        dp[i] = dp[i - 1];
        for (int j = W; j >= items[i].w; --j)
            dp[i][j] = max(dp[i][j], dp[i - 1][j - items[i].w] + items[i].v);
    }

    for (int i = 0; i <= n; ++i)
        for (int j = 1; j <= W; ++j)
            dp[i][j] = max(dp[i][j], dp[i][j - 1]);

    ll ans = dp[n][W], cur = 0;
    int buy = 0;
    multiset<int> free;
    for (int i = n; i > 0; --i) {
        cur += items[i].v;
        free.emplace(items[i].w);
        if (sz(free) > k) {
            buy += *free.begin();
            free.erase(*free.begin());
        }

        if (buy > W) break;
        ans = max(ans, cur + dp[i - 1][W - buy]);
    }

    cout << ans << '\n';

}

signed main() {
    cin.tie(0)->sync_with_stdio(0);
    solve();
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3652kb

input:

4 10 1
9 10
10 1
3 5
5 20

output:

35

result:

ok 1 number(s): "35"

Test #2:

score: 0
Accepted
time: 0ms
memory: 3784kb

input:

5 13 2
5 16
5 28
7 44
8 15
8 41

output:

129

result:

ok 1 number(s): "129"

Test #3:

score: 0
Accepted
time: 0ms
memory: 3512kb

input:

10 50 1
44 182173741
38 163268500
36 114173760
30 521894533
25 89514235
12 516184197
42 971377551
35 28242326
31 480227821
31 388523197

output:

2009456281

result:

ok 1 number(s): "2009456281"

Test #4:

score: 0
Accepted
time: 0ms
memory: 3624kb

input:

10 100 3
23 51015869
9 981426050
76 243762017
64 128189636
4 718411601
48 250140255
17 340478117
68 262055220
40 370503079
4 547232664

output:

3765024872

result:

ok 1 number(s): "3765024872"

Test #5:

score: 0
Accepted
time: 0ms
memory: 3836kb

input:

10 500 10
430 981427684
100 458631577
32 453298334
393 716958962
82 120486064
393 561149128
182 518807793
293 950335710
332 159193263
331 280711850

output:

5201000365

result:

ok 1 number(s): "5201000365"

Test #6:

score: 0
Accepted
time: 1ms
memory: 3712kb

input:

10 3000 10
1325 563890842
2007 190665722
1393 874490922
548 279594682
1380 155046921
2666 894516819
770 740325614
2735 643777488
2451 754155860
1068 138544189

output:

5235009059

result:

ok 1 number(s): "5235009059"

Test #7:

score: 0
Accepted
time: 0ms
memory: 4240kb

input:

10 10000 5
108 735534045
6250 87364128
3071 66920092
9343 555321302
9070 759896065
9843 146885261
3083 364637443
7088 370871572
7802 754417134
3125 697204945

output:

4451687859

result:

ok 1 number(s): "4451687859"

Test #8:

score: -100
Wrong Answer
time: 0ms
memory: 3708kb

input:

100 50 61
24 517916473
33 497071404
40 343150837
13 559776223
2 941245278
27 987936903
7 403293890
26 68412861
28 683505315
6 173482637
31 220799032
29 815472376
42 426462445
25 470177395
43 818534622
26 137556071
15 308105056
27 745044655
28 309413241
11 61130780
36 963194467
19 701095156
5 9347020...

output:

45743385015

result:

wrong answer 1st numbers differ - expected: '44747553879', found: '45743385015'