WA了,不知道哪里错了……
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int t;
int dp[1002][202][52];
inline int dfs(int l,int a,int b,int c){
if(l==0)
return 0;
if(dp[a][b][c]!=0)
return dp[a][b][c];
int tmp=999999999;
if(a>=8)
tmp=min(tmp,dfs(l-1,a-8,b,c)+8);
if(a>=3 && b>=1)
tmp=min(tmp,dfs(l-1,a-3,b-1,c)+4);
if(c>=1)
tmp=min(tmp,dfs(l-1,a+2,b,c-1)+1);
if(b>=2)
tmp=min(tmp,dfs(l-1,a+2,b-2,c)+2);
if(a>=3 && c>=1)
tmp=min(tmp,dfs(l-1,a-3,b+1,c-1)+4);
dp[a][b][c]=tmp;
return tmp;
}
int main(){
scanf("%d",&t);
for(int i=1; i<=t; ++i){
int s1,s2,s3,n;
scanf("%d%d%d%d",&n,&s1,&s2,&s3);
cout<<dfs(n,s1,s2,s3)<<endl;
}
return 0;
}
求大佬帮忙看看哪里错了……