比赛 2025暑期集训第7场 评测结果 WAAWWAWWAW
题目名称 倒水 最终得分 40
用户昵称 梧叶已同秋雨去 运行时间 0.027 s
代码语言 C++ 内存使用 3.73 MiB
提交时间 2025-08-11 17:11:57
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int a,aa,b,bb,c,cc,x,ans=1e9;
int v[105][105];
void dfs(int t){ 
//	cout<<a<<" "<<b<<" "<<c<<" "<<t<<endl;
	if(v[a][b]==1)return;
	v[a][b]=1;
	if(a==x||b==x||c==x){
		ans=min(ans,t);
		v[a][b]=0;
		return;
	}
	for(int i=1;i<=6;i++){
		if(i==1&&a&&b!=bb){
			if(a>=(bb-b)){
				a-=(bb-b);b=bb;
			}else{
				b+=a;
				a=0;
			}//cout<<a<<" "<<b<<" "<<c<<" "<<t<<" "<<i<<endl;
			dfs(t+1);
			if(b>=(aa-a)){
				
				b-=(aa-a);a=aa;
			}else{
				a+=b;
				b=0;
			}
		}
		if(i==2&&a&&c!=cc){
			if(a>=(cc-c)){
				
				a-=(cc-c);c=cc;
			}else{
				c+=a;
				a=0;
			}//cout<<a<<" "<<b<<" "<<c<<" "<<t<<" "<<i<<endl;
			dfs(t+1);
			if(c>=(aa-a)){
				
				c-=(aa-a);a=aa;
			}else{
				a+=c;
				c=0;
			}
		}
		if(i==3&&b&&a!=aa){
			if(b>=(aa-a)){
				
				b-=(aa-a);a=aa;
			}else{
				a+=b;
				b=0;
			}//cout<<a<<" "<<b<<" "<<c<<" "<<t<<" "<<i<<endl;
			dfs(t+1);
			if(a>=(bb-b)){
				
				a-=(bb-b);b=bb;
			}else{
				b+=a;
				a=0;
			}
		}
		if(i==4&&b&&c!=cc){
			if(b>=(cc-c)){
				b-=(cc-c);
				c=cc;
			}else{
				c+=b;
				b=0;
			}//cout<<a<<" "<<b<<" "<<c<<" "<<t<<" "<<i<<endl;
			dfs(t+1);
			if(c>=(bb-b)){
				
				c-=(bb-b);b=bb;
			}else{
				b+=c;
				c=0;
			}
		}
		if(i==5&&c&&a!=aa){
			if(c>=(aa-a)){
				
				c-=(aa-a);a=aa;
			}else{
				a+=c;
				c=0;
			}//cout<<a<<" "<<b<<" "<<c<<" "<<t<<" "<<i<<endl;
			dfs(t+1);
			if(a>=(cc-c)){
				
				a-=(cc-c);c=cc;
			}else{
				c+=a;
				a=0;
			}
		}
		if(i==6&&c&&b!=bb){
			if(c>=(bb-b)){
				
				c-=(bb-b);b=bb;
			}else{
				b+=c;
				c=0;
			}//cout<<a<<" "<<b<<" "<<c<<" "<<t<<" "<<i<<endl;
			dfs(t+1);
			if(b>=(cc-c)){
				
				b-=(cc-c);c=cc;
			}else{
				c+=b;
				b=0;
			}
		}
	}v[a][b]=0;
}
int main(){
	freopen("pourwater.in","r",stdin);
	freopen("pourwater.out","w",stdout);
	cin>>aa>>bb>>cc>>x;
	a=aa;
	dfs(0);
	if(ans==1e9)cout<<"false" ;
	else cout<<ans;
	return 0;
}