QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#783227#7739. KnapsackrahmanmehrajWA 4ms3844kbC++141.5kb2024-11-26 02:08:092024-11-26 02:08:09

Judging History

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

  • [2024-11-26 02:08:09]
  • 评测
  • 测评结果:WA
  • 用时:4ms
  • 内存:3844kb
  • [2024-11-26 02:08:09]
  • 提交

answer

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
#define ll long long

// Knapsack function to maximize beauty within a budget
ll knapsack(int W, const vector<pair<int, int>>& items) {
    vector<ll> dp(W + 1, 0); // dp[w] represents max beauty for budget w

    for (const auto& [price, beauty] : items) { 
        for (int w = W; w >= price; --w) {
            dp[w] = max(dp[w], dp[w - price] + beauty);
        }
    }

    return dp[W];
}

int main() {
    int n, W, k;
    cin >> n >> W >> k;

    vector<pair<int, int>> gemstones(n); // {price, beauty}
    for (int i = 0; i < n; ++i) {
        cin >> gemstones[i].first >> gemstones[i].second;
    }

    ll maxBeauty = 0;
    for (int mask = 0; mask < (1 << n); ++mask) {
        if (__builtin_popcount(mask) == k) { // Check if subset size is exactly k
            ll freeBeauty = 0, freeCost = 0;
            vector<pair<int, int>> remainingGemstones;

            for (int i = 0; i < n; ++i) {
                if (mask & (1 << i)) {
                    freeBeauty += gemstones[i].second; // Take this gemstone for free
                } else {
                    remainingGemstones.push_back(gemstones[i]); // Add to items to buy
                }
            }

            // Use knapsack to find max beauty for remaining gemstones
            ll currentBeauty = freeBeauty + knapsack(W, remainingGemstones);
            maxBeauty = max(maxBeauty, currentBeauty);
        }
    }

    cout << maxBeauty << endl;

    return 0;
}

详细

Test #1:

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

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: 3800kb

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: 3768kb

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: 1ms
memory: 3844kb

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: 3796kb

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: 0ms
memory: 3560kb

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: 4ms
memory: 3572kb

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: 3572kb

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:

0

result:

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