QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#317998 | #5146. Skills | unclezhou | RE | 0ms | 0kb | C++20 | 2.9kb | 2024-01-30 10:07:38 | 2024-01-30 10:07:38 |
answer
#include <bits/stdc++.h>
using namespace std;
const int N=1e3+10;
int dp[N][210][210][210];
void solve(){
int n;
cin>>n;
vector<int> a1(n+1),a2(n+1),a3(n+1);
for(int i=0;i<n;i++){
cin>>a1[i]>>a2[i]>>a3[i];
}
memset(dp,0,sizeof dp);
for(int i=0;i<n;i++){ //?i?
for(int j=0;j<=min(i,210);j++){ //???j??
for(int k=0;k<=min(i,210);k++){ //???k??
int j1=j+1;
int k1=k+1;
if(!j) j1=0;
if(!k) k1=0;
dp[i+1][1][j1][k1]=max(dp[i+1][1][j1][k1],dp[i][0][j][k]+a1[i]-j-k);
dp[i+1][0][1][k1]=max(dp[i+1][0][1][k1],dp[i][0][j][k]+a2[i]-k);
dp[i+1][0][j1][1]=max(dp[i+1][0][j1][1],dp[i][0][j][k]+a3[i]-j);
dp[i+1][1][0][k1]=max(dp[i+1][1][0][k1],dp[i][j][0][k]+a1[i]-k);
dp[i+1][j1][1][k1]=max(dp[i+1][j1][1][k1],dp[i][j][0][k]+a2[i]-j-k);
dp[i+1][j1][0][1]=max(dp[i+1][j1][0][1],dp[i][j][0][k]+a3[i]-j);
dp[i+1][1][j1][0]=max(dp[i+1][1][j1][0],dp[i][j][k][0]+a1[i]-j);
dp[i+1][j1][1][0]=max(dp[i+1][j1][1][0],dp[i][j][k][0]+a2[i]-j);
dp[i+1][j1][k1][1]=max(dp[i+1][j1][k1][1],dp[i][j][k][0]+a3[i]-j-k);
dp[i+1][1][j1][k1]=max(dp[i+1][1][j1][k1],dp[i][1][j][k]+a1[i]-j-k);
dp[i+1][2][1][k1]=max(dp[i+1][2][1][k1],dp[i][1][j][k]+a2[i]-1-k);
dp[i+1][2][j1][1]=max(dp[i+1][2][j1][1],dp[i][1][j][k]+a3[i]-j-1);
dp[i+1][1][2][k1]=max(dp[i+1][1][2][k1],dp[i][j][1][k]+a1[i]-1-k);
dp[i+1][j1][1][k1]=max(dp[i+1][j1][1][k1],dp[i][j][1][k]+a2[i]-j-k);
dp[i+1][j1][2][1]=max(dp[i+1][j1][2][1],dp[i][j][1][k]+a3[i]-j-1);
dp[i+1][1][j1][2]=max(dp[i+1][1][j1][2],dp[i][j][k][1]+a1[i]-j-1);
dp[i+1][j1][1][2]=max(dp[i+1][j1][1][2],dp[i][j][k][1]+a2[i]-j-1);
dp[i+1][j1][k1][1]=max(dp[i+1][j1][k1][1],dp[i][j][k][1]+a3[i]-j-k);
//if(i==1&&j==0&&k==0){
// cout<<dp[i][j][k][1]<<' '<<a2[i]<<' '<<j+1<<'\n';
// cout<<dp[i][j][k][1]+a2[i]-j-1<<'\n';
// cout<<j1<<' '<<k1<<'\n';
// cout<<dp[i+1][j1][1][2]<<'\n';
// cout<<dp[2][0][1][2]<<'\n';
//}
}
}
}
//cout<<"waht:";
//cout<<dp[2][0][1][2]<<'\n';
int ans=0;
for(int j=0;j<=min(210,n);j++){
for(int k=0;k<=min(210,n);k++){
ans=max(ans,dp[n][1][j][k]);
ans=max(ans,dp[n][j][1][k]);
ans=max(ans,dp[n][j][k][1]);
}
}
//cout<<dp[1][0][0][1]<<' '<<dp[2][0][1][2]<<' '<<dp[3][1][2][3]<<'\n';
cout<<ans<<'\n';
}
/*
1
3
1 1 10
1 10 1
10 1 1
*/
int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
int t;
cin>>t;
while(t--) solve();
return 0;
}
详细
Test #1:
score: 0
Runtime Error
input:
2 3 1 1 10 1 10 1 10 1 1 5 1 2 3 6 5 4 7 8 9 12 11 10 13 14 15