QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#625104 | #5303. No Bug No Game | Singularity | WA | 58ms | 355416kb | C++14 | 1.2kb | 2024-10-09 17:28:36 | 2024-10-09 17:28:37 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define db double
const int N=3e5+5;
const int M=3e3+5;
const int INF=1e9+7;
int n,k;
int f1[M][M][2]={0};
int f2[M][M][2]={0};
int p[M],w[M][M];
void solve()
{
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>p[i];
for(int j=1;j<=p[i];j++){
cin>>w[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=p[i];j<=k;j++){
f1[i][j][0]=max(f1[i-1][j][1],f1[i-1][j][0]);
f1[i][j][1]=max(f1[i-1][j-p[i]][1],f1[i-1][j-p[i]][0])+w[i][p[i]];
}
}
for(int i=n;i>=1;i--){
for(int j=p[i];j<=k;j++){
f2[i][j][0]=max(f2[i+1][j][1],f2[i+1][j][0]);
f2[i][j][1]=max(f2[i+1][j-p[i]][1],f2[i+1][j-p[i]][0])+w[i][p[i]];
}
}
int ans=-INF;
for(int i=0;i<=k;i++){
ans=max(ans,max(f1[n][i][1],f1[n][i][0]));
}
for(int i=1;i<=n;i++){
for(int pp=1;pp<p[i];pp++){
int temp=0;
for(int j=0;j<=k-pp;j++){
temp=max(temp,f1[i][j][0]+f2[i][k-pp-j][0]);
temp=max(temp,f2[i][j][0]+f1[i][k-pp-j][0]);
}
ans=max(ans,temp+w[i][pp]);
}
}
cout<<ans<<endl;
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int T = 1;
// cin >> T;
while (T--) {
solve();
}
return 0;
}
/*
*/
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 5676kb
input:
4 5 2 1 3 2 1 1 2 3 1 2 1 3
output:
9
result:
ok 1 number(s): "9"
Test #2:
score: -100
Wrong Answer
time: 58ms
memory: 355416kb
input:
3000 3000 10 70562 30723 79371 82224 63977 3362 26909 96449 48163 66159 4 18007 33590 80674 91139 4 10304 31694 70745 50656 10 63090 17226 13187 73881 38137 15237 55750 82751 75854 39658 8 95640 66120 87735 36388 44046 92415 6952 94772 9 60565 27904 98726 87052 35768 25453 14563 34273 92501 10 66332...
output:
68235226
result:
wrong answer 1st numbers differ - expected: '68279788', found: '68235226'