全WA,41分
  • 板块P1432 倒水问题
  • 楼主yinbe
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/6 22:14
  • 上次更新2023/11/7 12:12:41
查看原帖
全WA,41分
759152
yinbe楼主2023/11/6 22:14

答案我永远少2

提交记录

#include<iostream>
#include<cstring>
using namespace std;
int A,B,T,n,Min=1000000000,s[100005],ans[100005];
bool vis[1005][1005]={0};
void dfs(int a,int b,int step)
{
	if(b==n)
		{
		if(Min>step)
		{
			Min=step;
			for(int i=1;i<=Min;i++)
			{
				ans[i]=s[i];
			}			
		}
		return;
	}
	if(vis[a][b])
	{
		return;
	}
	vis[a][b]=true;
	if(a!=A)s[step+1]=1,dfs(A,b,step+1);
	if(b!=B)s[step+1]=2,dfs(a,B,step+1);
	if(a!=0)s[step+1]=3,dfs(0,b,step+1);
	if(b!=0)s[step+1]=4,dfs(a,0,step+1);
	int t=min(A-a,b);
	if(a!=A&&b!=0)s[step+1]=5,dfs(a+t,b-t,step+1);
	t=min(a,B-b);
	if(b!=B&&a!=0)s[step+1]=6,dfs(a-t,b+t,step+1);
	return;
}
int main()
{
	scanf("%d",&T);
	while(T--)
	{
		memset(vis,0,sizeof(vis));
		scanf("%d%d%d",&A,&B,&n);
		Min=1000000000;
		dfs(0,0,0);
		printf("%d ",Min);
		for(int i=1;i<=Min;i++)
		{
			printf("%d ",ans[i]);
		}
		printf("\n");
	}
	return 0;
}
2023/11/6 22:14
加载中...