HDU - 1495 bfs [kuangbin带你飞]专题一

时间:2021-12-30 22:55:32

模拟倒水的过程,每次可以把第i个杯子的水向第j个杯子里面倒,这可能出现新的状态,不停的更新状态,指导某两个杯子的水等于S/2说明找到答案,如果所有状态搜索完毕仍然不能均分,则退出。

注意:如果S是奇数,一定不能均分,因为所有杯子的体积都是整数,不可能倒出有小数的水。

AC代码

#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = 100 + 5;
int d[maxn][maxn], s, n, m;

struct node{
	int s, n, m;
	node(){
	}
	node(int s, int n, int m):s(s), n(n), m(m){
	}
};

int bfs(){
	int cup[]={s, n, m};
	memset(d, -1, sizeof(d));
	queue<node>q;
	q.push(node(s, 0, 0)); //初始状态
	d[0][0] = 0;
	while(!q.empty()){
		node p = q.front();
		q.pop();
		int x = p.s, y = p.n, z = p.m;
		if(x == s / 2 && y == s /2 || (x == s / 2 && z == s /2) || (y == s / 2 && z == s /2)) return d[y][z];
		int a[3];

		for(int i = 0; i < 3; ++i)
			for(int j = 0; j < 3; ++j){
				a[0] = x, a[1] = y, a[2] = z;
				int pour = min(a[i], cup[j] - a[j]);
				a[i] -= pour;
				a[j] += pour;
				if(d[a[1]][a[2]] == -1) {
					d[a[1]][a[2]] = d[y][z] + 1;
					q.push(node(a[0], a[1], a[2]));
				}
			}

	}
	return -1;
}

int main(){
	while(scanf("%d%d%d", &s, &n, &m) == 3 && s){
		int tp = -1;
		if(!(s & 1)) tp = bfs();
		if(tp == -1) printf("NO\n");
		else printf("%d\n", tp);
	}
	return 0;
}

如有不当之处欢迎指出!

HDU - 1495 bfs [kuangbin带你飞]专题一的更多相关文章

  1. HDU - 3533 bfs &lbrack;kuangbin带你飞&rsqb;专题二

    看了好久的样例才看懂. 题意:有一个人要从(0,0)走到(n,m),图中有k个碉堡,每个碉堡可以向某个固定的方向每隔t秒放一次炮,炮弹不能穿越另一个碉堡,会被阻挡.人在移动的过程中不会被炮弹打到,也就 ...

  2. HDU - 2612 bfs &lbrack;kuangbin带你飞&rsqb;专题一

    分别以两个人的家作为起点,bfs求得到每个KFC最短距离.然后枚举每个KFC,求得时间之和的最小值即可. 此题不符合实际情况之处:  通过了一个KFC再去另一个KFC可以吗? 出题人都没好好想过吗? ...

  3. HDU - 2102 A计划 &lpar;BFS&rpar; &lbrack;kuangbin带你飞&rsqb;专题二

    思路:接BFS判断能否在限制时间内到达公主的位置,注意如果骑士进入传送机就会被立即传送到另一层,不会能再向四周移动了,例如第一层的位置(x, y, 1)是传送机,第二层(x, y, 2)也是传送机,这 ...

  4. HDU - 1241 dfs or bfs &lbrack;kuangbin带你飞&rsqb;专题一

    8个方向求联通块,经典问题. AC代码 #include<cstdio> #include<cstring> #include<algorithm> #includ ...

  5. UVA - 11624 多点bfs &lbrack;kuangbin带你飞&rsqb;专题一

    题意:某人身陷火场,总有k个点着火,着火点可向四周扩散,问此人能否逃离. 思路:可能有多个着火点,以这些着火点作为起点进行bfs,得到整个火场的最短距离,然后又以人所在坐标作为起点进行bfs,得到该人 ...

  6. POJ - 2251 bfs &lbrack;kuangbin带你飞&rsqb;专题一

    立体bfs,共有六个方向: const int dx[] = {0,0,1,-1,0,0}; const int dy[] = {1,-1,0,0,0,0}; const int dz[] = {0, ...

  7. FZU - 2150 bfs &lbrack;kuangbin带你飞&rsqb;专题一

    题意:两个人玩很变态的游戏,将一个草坪的某两个点点燃,点燃的草坪可以向上下左右四个方向扩散,问能否将整块草坪上面的草都点燃.如果能,输出最短时间(^_^他们就能玩更变态的游戏了),如果不能,输出-1. ...

  8. POJ - 3414 bfs &lbrack;kuangbin带你飞&rsqb;专题一

    状态搜索,每种状态下面共有六种选择,将搜索到的状态保存即可. d[i][j]表示状态A杯中水i升,B杯中水j升,总状态数量不会超过A杯的容量 * B杯的容量. AC代码 #include<cst ...

  9. POJ - 3984 bfs &lbrack;kuangbin带你飞&rsqb;专题一

    bfs搜索过程中将路径保存下即可. AC代码 #include<cstdio> #include<cstring> #include<algorithm> #inc ...

随机推荐

  1. C&num;使用正则表达式检测数字 char 和韩文

    if (!System.Text.RegularExpressions.Regex.IsMatch(strRoleName[i].ToString(), @"^[\uac00-\ud7ff] ...

  2. ajax返回数据类型为JSON数据的处理

    JSON数据处理: 1.编码格式必须为utf8 2.echo json_encode($db->GuanQuery($sql));   返回的是关联数组.json_encode返回的是json数 ...

  3. Codeforces Gym 100803G Flipping Parentheses 线段树&plus;二分

    Flipping Parentheses 题目连接: http://codeforces.com/gym/100803/attachments Description A string consist ...

  4. Linux指令--cat&comma;tac

    原文出处:http://www.cnblogs.com/peida/archive/2012/10/30/2746968.html cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内 ...

  5. 未能加载文件或程序集&OpenCurlyDoubleQuote;System&period;Web&period;Mvc&comma; Version&equals;5&period;2&period;4&period;0&comma; Culture&equals;neutral&comma; PublicKeyToken&equals;31bf3856ad364e35”或它的某一个依赖项

    楼主创建项目的时候选择的是5.2.4的版本,但是后来改成了5.0.0于是出现了这个错误,解决的方法倒也简单 将View文件夹下 web.config文件中 以下两处 版本改成当前版本就行了

  6. TS学习随笔(六&rpar;-&gt&semi;断言

    now,我们来看一看TS里面的断言,听起来很上档次啊,其实看完你就发出惊叹,这就是断言啊 类型断言 类型断言(Type Assertion)可以用来手动指定一个值的类型 语法 <类型>值 ...

  7. git 修改客户端用户名和密码

    1.修改某个具体项目中的用户名密码 vim xx/{yourProject dir }/.git/.git-credentials 在.git-credentials文件中配置用户名密码 https: ...

  8. 代码控如何实现配置fiddler

    很多小哥哥总觉得测试点点点很low,总想码代码.那么fiddler除了一些手动设置外,还可以进行丰富的代码编写,用以完成任务. 打开fiddler,工具栏选择Rules->Customize R ...

  9. 封装一个音乐列表music-list基础组件,可以共用,哪个需要的时候就是哪个props相应的值

    1.封装music-lsit组件: <template> <div class="music-list singer-detail"> <div cl ...

  10. Qt 4&period;8&period;5 icpc&colon; Command not found

    icpc: Command not found 交叉编译Qt4.8.5的时候出现