QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#701909 | #7739. Knapsack | yumingsk# | WA | 1ms | 3784kb | C++20 | 2.3kb | 2024-11-02 14:54:03 | 2024-11-02 14:54:09 |
Judging History
answer
#pragma GCC optimize(3, "Ofast", "inline")
#include <iostream>
#include <bits/stdc++.h>
#define IOS ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
#define INF 0x3f3f3f3f
#define L_INF 0x7f3f3f3f3f3f3f3f
#define db cout << "debug\n";
using namespace std;
const int Mod = 998244353;
using ll = long long;
ll dp[2][10001];
ll f[5005], maxsum[5005], top, maxnn, maxn[5005];
struct Node
{
ll w, v;
} a[5005];
bool cmp(Node a, Node b)
{
return a.v < b.v;
}
bool cmp2(ll a, ll b)
{
return a > b;
}
ll max(ll a, ll b) { return a > b ? a : b; }
void solve()
{
int n, m;
int k;
cin >> n >> m >> k;
for (int i = 1; i <= n; i++)
{
cin >> a[i].v >> a[i].w;
}
// for (int i = 0; i <= n; i++)
// {
// for (int j = 0; j <= m; j++)
// {
// dp[i][j] = INF;
// }
// }
sort(a + 1, a + n + 1, cmp);
top = 0;
maxsum[n + 1] = 0;
for (int i = n; i > n - k; i--)
{
f[n - i + 1] = a[i].w;
maxsum[i] = maxsum[i + 1] + a[i].w;
}
sort(f + 1, f + k + 1, cmp2);
for (int i = n - k; i > 0; i--)
{
if (f[k] >= a[i].w)
continue;
maxsum[i] = maxsum[i + 1] + a[i].w - f[k];
ll o = k;
while (o > 0 && f[o] < a[i].w)
{
f[o + 1] = f[o];
o--;
}
f[o + 1] = a[i].w;
}
dp[0][0] = 0;
ll ans = 0;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
if (j >= a[i].v)
dp[i % 2][j] = max(dp[1 - i % 2][j], dp[1 - i % 2][j - a[i].v] + a[i].w);
else
{
dp[i % 2][j] = dp[1 - i % 2][j];
}
maxn[i] = max(maxn[i], dp[i % 2][j]);
}
maxnn = max(maxnn, maxn[i] + maxsum[i + 1]);
}
maxnn = max(maxnn, maxsum[1]);
cout << maxnn << '\n';
}
int main()
{
IOS;
// freopen("in.txt", "r", stdin);
// freopen("out.txt", "w", stdout);
#ifndef ONLINE_JUDGE
clock_t start_time = clock();
#endif
int t = 1;
// cin >> t;
while (t--)
{
solve();
}
#ifndef ONLINE_JUDGE
cout << "Used " << (double)(clock() - start_time) << " ms" << endl;
#endif
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3628kb
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: 3624kb
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: 3744kb
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: 3692kb
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: 3608kb
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: 3748kb
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: 1ms
memory: 3784kb
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: 3756kb
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:
39527028047
result:
wrong answer 1st numbers differ - expected: '44747553879', found: '39527028047'