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) 题意: ...
随机推荐
- 基于Nginx和openssl实现https
[root@localhost ssl]# yum -y install openssl [root@localhost ssl]# mkdir /usr/local/nginx/conf/ssl/ ...
- zz错误集锦
1.csp-s模拟测试63 T1 2e8的数组开bitset会ce,开bool就可以了,bool一位占一个字节,不是四个字节 2.csp-s模拟测试65 T2 把用vector存图改成前向星,就A了, ...
- 5G最新套餐以及对应限速标准
原文: http://news.mydrivers.com/1/654/654529.htm 再过两天,国内的5G就要正式运营了,中国移动.联通.电信的5G预约用户亿元超过千万,三家运营商的5G套餐费 ...
- IM开发者的零基础通信技术入门(三):国人通信方式的百年变迁
[来源申明]本文原文来自:微信公众号“鲜枣课堂”,官方网站:xzclass.com,原题为:<中国通信的百年沉浮>,本文引用时已征得原作者同意.为了更好的内容呈现,即时通讯网在收录时内容有 ...
- 用Java开发的【智能语音开发板MEGA ESP32AI】
有点激动 ~ ~ ~ 新鲜出炉,用视频看看效果哦 我们新研发出世的语音开发板MEGA ESP32AI,来看看吧,有点腻害哦!!!先演示下功能语音控制开关等.播报天气 戳下面链接看视频哦? MEGA E ...
- Vue.js 源码分析(三) 基础篇 模板渲染 el、emplate、render属性详解
Vue有三个属性和模板有关,官网上是这样解释的: el ;提供一个在页面上已存在的 DOM 元素作为 Vue 实例的挂载目标 template ;一个字符串模板作为 Vue 实例的标识使用.模板将会 ...
- Unsupervised Attention-guided Image-to-Image Translation
这是NeurIPS 2018一篇图像翻译的文章.目前的无监督图像到图像的翻译技术很难在不改变背景或场景中多个对象交互方式的情况下将注意力集中在改变的对象上去.这篇文章的解决思路是使用注意力导向来进行图 ...
- 使用 jQuery.TypeAhead 让文本框自动完成 (二)(访问远程数据)
项目地址:https://github.com/twitter/typeahead.js 直接贴代码了: @section headSection { <script type="te ...
- Spring Boot 使用 Log4j2 & Logback 输出日志到 EKL
文章目录 1.ELK 介绍 2.环境.软件准备 3.ELK 环境搭建 4.Spring Boot 配置示例 4.1.Log4j2 方式配置 4.2.Logback 方式配置 1.ELK 介绍 ELK ...
- Python【day 10】函数进阶-动态函数
形参小结 1.位置参数2.默认值参数3.动态参数 1.*args 位置参数的动态传参. 系统会自动的把所有的位置参数聚合成元组 2.**kwargs 关键字参数的动态传参. 系统会自动的把所有的关键字 ...