QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#647404 | #8354. T2 | junee | 0 | 8ms | 41144kb | C++14 | 1.3kb | 2024-10-17 13:54:21 | 2024-10-17 13:54:22 |
Judging History
answer
#include<iostream>
#include<iomanip>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<random>
#include<chrono>
using namespace std;
mt19937_64 rnd(chrono::steady_clock::now().time_since_epoch().count());
typedef long long LL;
const int N=2e6+10;
int n,m,k;
LL f[N],st[N];
LL ans[N];
struct node{
int x,v,t;
}p[N];
struct query{
int op,x;
}q[N];
int main(){
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>n>>m>>k;
for(int i=1,x,y;i<=n;i++)cin>>x>>y,p[i]={x,y,x*y};
for(int i=1;i<=m;i++){
int op,x;
cin>>op>>x;
q[i]={op,x};
}
memset(f,0,sizeof f);
memset(st,0,sizeof st);
for(int T=1;T<=m;T++){
int op=q[T].op,x=q[T].x;
if(op==1)st[x]=1;
}
for(int i=1;i<=n;i++){
if(st[i])continue;
for(int j=k;j>=p[i].t;j--)
f[j]=max(f[j],f[j-p[i].t]+p[i].v);
}
for(int T=m;T;T--){
int op=q[T].op,x=q[T].x;
if(op==1){
for(int j=k;j>=p[x].t;j--)
f[j]=max(f[j],f[j-p[x].t]+p[x].v);
}
else if(op==2)ans[T]=f[x]-1;
}
for(int i=1;i<=m;i++){
if(ans[i]!=0)cout<<ans[i]+1<<'\n';
}
return 0;
}
/*
感觉 sub2 是好做的,直接做一个大小为 k 的背包?感觉会 T 咋办?
欸!我有一计,直接时间回溯,把最后的背包做出来,一步一步往前坐,能行吗?
*/
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 11
Accepted
time: 4ms
memory: 40916kb
input:
3205 5000 5000 1 1 2 1 3 1 7 1 8 1 9 1 10 1 11 1 12 2 13 1 14 2 16 1 17 2 20 3 22 1 24 1 26 2 27 1 30 1 32 2 33 1 34 1 41 1 44 2 49 2 51 1 54 2 58 2 61 2 65 2 66 1 68 2 70 1 71 2 72 2 74 8 75 3 76 5 77 1 78 7 79 5 80 5 81 1 82 2 84 1 86 6 87 6 88 3 89 9 90 5 91 1 92 2 93 3 95 7 96 2 97 2 98 8 99 8 1...
output:
81 69 32 40 42 90 32 83 44 50 91 70 53 65 82 50 68 59 86 38 67 70 79 45 50 65 88 43 37 74 29 63 73 7 53 57 75 20 44 50 47 36 73 55 30 42 78 75 47 80 66 87 36 21 73 23 88 37 68 53 57 28 46 59 56 69 28 84 26 41 64 59 35 60 5 42 35 74 63 54 87 73 83 59 39 38 45 48 89 69 62 23 82 84 31 85 56 87 81 80 66...
result:
ok 2487 lines
Test #2:
score: 11
Accepted
time: 4ms
memory: 40064kb
input:
162 5000 5000 836 4 837 5 838 5 839 5 840 4 841 4 842 4 843 4 844 4 845 4 846 5 847 4 848 4 849 5 850 4 851 5 852 5 853 4 854 5 855 4 856 5 857 4 858 4 859 4 860 5 861 5 862 4 863 4 864 4 865 5 866 5 867 4 868 5 869 4 870 4 871 5 872 4 873 4 874 5 875 4 876 4 877 5 878 5 879 4 880 4 881 5 882 5 883 ...
output:
5 0 0 3 0 5 5 0 0 4 5 0 0 0 4 3 0 5 4 0 0 0 0 0 0 4 0 0 4 0 0 5 0 0 3 3 0 0 3 0 0 4 4 0 3 3 0 4 0 0 0 4 0 0 0 0 0 0 0 0 5 0 0 0 0 0 3 0 0 0 4 0 0 5 0 0 3 5 4 0 0 3 0 4 5 4 0 0 5 4 0 0 0 0 3 0 0 0 4 5 5 5 0 4 4 4 3 5 5 5 0 3 0 3 0 4 0 4 5 3 0 0 0 3 0 5 3 0 0 0 0 0 3 0 0 4 0 0 0 0 3 4 5 3 0 4 5 3 5 0 ...
result:
ok 4838 lines
Test #3:
score: 0
Wrong Answer
time: 8ms
memory: 41144kb
input:
3182 5000 5000 1 2597 2 404 3 409 4 220 5 604 6 248 7 48 8 145 9 97 10 356 11 111 12 158 13 192 14 309 15 168 16 251 17 234 18 68 19 223 20 111 21 235 22 152 23 188 24 48 25 75 26 9 27 34 28 153 29 58 30 18 31 153 32 76 33 150 34 52 35 121 36 37 37 7 38 79 39 96 40 101 41 8 42 66 43 61 44 77 45 83 4...
output:
404 464 0 894 701 60 758 461 758 413 758 59 708 607 551 724 59 304 97 403 290 193 194 0 242 49 49 2 363 301 146 205 363 9 97 146 335 333 335 99 410 354 243 343 97 334 343 211 211 236 142 9 134 194 148 60 134 168 128 94 101 0 168 76 165 101 100 61 156 95 2 111 109 152 51 9 9 110 63 20 72 44 44 71 56 ...
result:
wrong answer 50th lines differ - expected: '1', found: '236'
Subtask #2:
score: 0
Time Limit Exceeded
Test #11:
score: 0
Time Limit Exceeded
input:
1277351 1 2000000 2 2 5 1 7 3 8 4 10 1 12 1 15 2 16 1 18 1 22 1 25 1 28 3 29 1 32 1 35 1 36 1 38 2 40 1 41 2 42 1 43 2 44 2 45 1 48 1 49 1 50 2 54 2 55 2 56 1 58 2 59 2 60 2 62 1 66 1 68 3 69 1 70 3 72 2 76 1 78 1 79 2 81 2 82 3 84 2 85 1 86 2 89 1 90 2 91 2 92 1 93 1 96 3 98 3 99 2 100 3 101 1 102 ...
output:
result:
Subtask #3:
score: 0
Time Limit Exceeded
Test #21:
score: 0
Time Limit Exceeded
input:
5000 5000 2000000 1 1 2 1 3 1 4 1 6 1 7 1 8 1 9 1 10 1 11 1 14 1 15 3 17 2 18 2 21 1 22 1 24 1 25 3 27 1 28 2 29 1 30 1 31 1 32 1 33 1 34 1 35 1 37 1 38 1 39 1 40 2 41 2 43 1 45 1 47 1 49 1 50 1 51 1 54 1 55 1 56 1 61 1 62 2 64 1 65 1 67 2 68 2 70 2 72 2 74 1 76 3 79 2 82 4 83 2 84 1 88 1 91 1 92 1 ...
output:
result:
Subtask #4:
score: 0
Time Limit Exceeded
Test #31:
score: 0
Time Limit Exceeded
input:
191299 5000 300000 1 1 5 1 6 2 7 1 8 1 10 1 11 2 12 2 17 1 18 1 19 1 20 1 21 1 22 2 25 1 28 1 29 2 30 1 31 2 34 1 36 1 37 1 38 1 40 1 42 1 43 1 44 1 45 1 47 2 48 1 51 1 53 3 54 2 56 2 58 2 59 2 61 2 63 4 64 2 67 1 68 2 69 2 70 1 72 1 76 1 77 1 78 1 80 2 83 1 84 1 87 1 88 1 89 1 91 2 93 1 95 1 96 1 9...
output:
result:
Subtask #5:
score: 0
Time Limit Exceeded
Test #41:
score: 0
Time Limit Exceeded
input:
1278949 5000 2000000 4 1 9 1 12 1 13 1 15 2 20 1 21 2 26 1 36 1 39 2 43 1 46 2 59 1 64 1 66 1 71 1 73 1 75 1 78 2 83 1 87 1 89 1 92 1 97 1 103 1 104 1 108 1 111 1 113 1 114 1 117 2 118 1 130 1 137 1 140 1 151 1 152 1 155 1 158 2 163 1 164 1 165 1 168 1 172 1 173 1 183 1 185 1 186 1 192 1 208 1 210 2...