求助
查看原帖
求助
121813
老子是北瓜楼主2020/8/9 09:13

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;
} 

求大佬帮忙看看哪里错了……

2020/8/9 09:13
加载中...