hdu1495-非常可乐-(倒水问题bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=1495
题解:
1.最少次数?
江湖套路,bfs。
2.怎么倒?
从一个杯子倒到另一个杯子。
3.倒多少?
因为没有刻度,所以是将自己的水倒完 或者 将别人的未填满部分 填充完。
4.为什么可以这样倒?
因为起始水量和杯子容量都知道,倒水后两边的水量都是已知的,倒水量也是已知的。
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<math.h>
#include<string>
#include<queue>
#include<vector>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std; struct node
{
int x,y,z,t;
};
int x,y,z;///杯子容量
bool vis[][][];
int b[];
queue<node>que; int bfs()
{
while(!que.empty())
que.pop();
memset(vis,false,sizeof(vis));
que.push({x,,,});
vis[x][][]=true;
while(!que.empty())
{
node now=que.front();
que.pop();
if((now.x==now.y&&now.z==) || (now.x==now.z&&now.y==) || (now.x==&&now.y==now.z) )
{
return now.t;
}
int a[]={,,,,};
a[]=now.x;
a[]=now.y;
a[]=now.z;///三个杯子
a[]=now.t; int temp[]={,,,,};///临时存储的新的状态 for(int i=;i<=;i++)///倒水的杯子i
{
for(int j=;j<=;j++)///进水的杯子j
{
int temp[]={,,,,};
temp[]=now.x;temp[]=now.y;temp[]=now.z;///和a一样获取now的值,因为只对两个杯子变动,还有一个没变
int need=b[j]-a[j] ;///被倒进的杯子还需要多少装满
if( i!=j )///不是同一个杯子
{
if(a[i]<=need)///如果a能倒完
{
temp[i]=;
temp[j]=temp[j]+a[i];
}
if(a[i]>need)///a不能倒完,就倒need量的水
{
temp[i]=a[i]-need;
temp[j]=a[j]+need;
}
if( !vis[ temp[] ][ temp[] ][ temp[] ] )
{
que.push( { temp[],temp[],temp[],a[]+ } );
vis[ temp[] ][ temp[] ][ temp[] ]=true;
}
}
}
}
}
return ;
} int main()
{ while(scanf("%d%d%d",&x,&y,&z)&&(x+y+z))
{
b[]=x;
b[]=y;
b[]=z;///b数组是容量
int ans=bfs();
if(ans)
printf("%d\n",ans);
else
printf("NO\n");
}
return ;
}
hdu1495-非常可乐-(倒水问题bfs)的更多相关文章
- HDU1495 非常可乐 —— BFS + 模拟
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1495 非常可乐 Time Limit: 2000/1000 MS (Java/Others) M ...
- HDU-1495 非常可乐(BFS)
广搜的灵活应用题: 非常可乐 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- HDU1495 非常可乐(BFS/数论)
大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多.但see ...
- HDU 1495 非常可乐(数论,BFS)
非常可乐 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- HDU1495 非常可乐
解题思路:简单的宽搜,见代码: #include<cstdio> #include<cstring> #include<algorithm> #include< ...
- HDU ACM 1495 非常可乐(广搜BFS)
非常可乐 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissi ...
- HDU-1495 非常可乐 (嵌套结构体-广搜 对比 一般广搜)
题意 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多.但 ...
- 题目1457:非常可乐(广度优先遍历BFS)
题目链接:http://ac.jobdu.com/problem.php?pid=1457 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...
- HDU小小练
hdu1253胜利大逃亡(bfs) 题意:就是城堡问题,找出可通行路径即可 思路:三维BFS,设定前后上下左右6个方向搜索,注意开始的时候人站的位置可以是墙. hdu1495非常可乐(bfs) 题意: ...
随机推荐
- WordPress更改“固定链接”后 ,页面出现404的解决方法
一.Web服务器对应的是Nginx 解决方案:修改linux服务器下Nginx的配置文件,目录为:/usr/local/nginx/conf/nginx.conf, 也可以直接使用命令nginx -t ...
- centos的key登录,关闭密码登录
1.删除机器原有的key rm -rf /root/.ssh 2.创建key[root@rain ~]# ssh-keygen -t rsa一路回车 3.改名[root@rain ~]# mv /ro ...
- webrtc笔记(5): 基于kurento media server的多人视频聊天示例
这是kurento tutorial中的一个例子(groupCall),用于多人音视频通话,效果如下: 登录界面: 聊天界面: 运行方法: 1.本地用docker把kurento server跑起来 ...
- python-6-for循环及format三种用法
前言 循环我们前面讲过了无限循环,那么for循环属于什么循环呢?显然就是有限循环: 另外格式化输出我们前面也讲过,但是format也能做到不一样的格式化输出.一起看看吧! 一.for 循环 1.fro ...
- mybatis使用collection查询集合属性规则
接上篇mybatis使用associaton进行分步查询 相关的类还是上篇中的类. 查询部门的时候将部门对应的所有员工信息也查询出来 DepartmentMapper.xml <!--嵌套结果集 ...
- 手风琴效果 animate
animate的手风琴效果 <style type="text/css"> * { margin: 0; padding: 0; } ul{ list-style: n ...
- vue怎么给自定义组件绑定原生事件
下面主要以4个示例Demo演示(示例代码JS引用的Vue CDN),建议小伙伴直接复制示例代码运行查看, 赶时间的小伙伴可直接往下拉,看示例demo4 注:全局或局部注册的组件称为子组件,其中声明的 ...
- Neo4j 第九篇:查询数据(Match)
Cypher使用match子句查询数据,是Cypher最基本的查询子句.在查询数据时,使用Match子句指定搜索的模式,这是从Neo4j数据库查询数据的最主要的方法.match子句之后通常会跟着whe ...
- Java 函数式编程—@FunctionalInterface----functional interface
单一函数接口,可以使用拉姆达表达式的形式具体化和实例化. 本质是将接口函数签名化. 如定义了一个函数式接口如下: @FunctionalInterface interface GreetingServ ...
- OpenGL入门1.4:纹理/贴图Texture
每一个小步骤的源码都放在了Github 的内容为插入注释,可以先跳过 前言 游戏玩家对Texture这个词应该不陌生,我们已经知道了怎么为每个顶点添加颜色来增加图形的细节,但,如果想让图形看起来更真实 ...