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)的更多相关文章

  1. HDU1495 非常可乐 —— BFS + 模拟

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1495 非常可乐 Time Limit: 2000/1000 MS (Java/Others)    M ...

  2. HDU-1495 非常可乐(BFS)

    广搜的灵活应用题: 非常可乐 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  3. HDU1495 非常可乐(BFS/数论)

    大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多.但see ...

  4. HDU 1495 非常可乐(数论,BFS)

    非常可乐 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  5. HDU1495 非常可乐

    解题思路:简单的宽搜,见代码: #include<cstdio> #include<cstring> #include<algorithm> #include< ...

  6. HDU ACM 1495 非常可乐(广搜BFS)

    非常可乐 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submissi ...

  7. HDU-1495 非常可乐 (嵌套结构体-广搜 对比 一般广搜)

    题意 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多.但 ...

  8. 题目1457:非常可乐(广度优先遍历BFS)

    题目链接:http://ac.jobdu.com/problem.php?pid=1457 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...

  9. HDU小小练

    hdu1253胜利大逃亡(bfs) 题意:就是城堡问题,找出可通行路径即可 思路:三维BFS,设定前后上下左右6个方向搜索,注意开始的时候人站的位置可以是墙. hdu1495非常可乐(bfs) 题意: ...

随机推荐

  1. AtCoder Beginner Contest 139F Engines

    链接 problem 给出\(n\)个二元组\((x,y)\).最初位于原点\((0,0)\),每次可以从这\(n\)个二元组中挑出一个,然后将当前的坐标\((X,Y)\)变为\((X+x,Y+y)\ ...

  2. rest-framework框架——版本

    一.DRF版本控制介绍 随着项目更新,版本会越来越多,不能新的版本出现,旧版本就不再使用维护了.因此不同的版本会有不同的处理,且接口会返回不同的信息. API版本控制允许我们在不同的客户端之间更改行为 ...

  3. BDFramework.Core 学习

    x哥(懂的都懂)的框架, 拿点代码过来做注释. 想了解详情可以去他的github https://github.com/yimengfan/BDFramework.Core # Object file ...

  4. python 利用cip.cc查询IP归属地

    def ipinfocip(ip): # 获得 输入框中的信息 url = "http://www.cip.cc/%s" % ip # 模拟浏览器请求网络 headers={'Us ...

  5. 爬虫——控制台抓包和requests.post()发送请求

    控制台抓包 打开方式及常用选项 1.打开浏览器,F12打开控制台,找到Network选项卡 2.控制台常用选项 1.Network: 抓取网络数据包 1.ALL: 抓取所有的网络数据包 2.XHR:抓 ...

  6. 从零实现一个React:Luster(一):JSX解析器

    前言 这是之前在掘金发的两条沸点,懒得写了,直接复制过来作为前言了.然后这个项目可能之后还会继续写,增加一些路由或者模板引擎的指令什么的,但是再过没多久寒假就有大块时间了就可能不摸这个鱼去开其它坑了, ...

  7. [开源]OSharpNS 步步为营系列 - 4. 添加业务对外API

    什么是OSharp OSharpNS全称OSharp Framework with .NetStandard2.0,是一个基于.NetStandard2.0开发的一个.NetCore快速开发框架.这个 ...

  8. Program 3 – CS 344

    Program 3 – CS 344OverviewIn this assignment you will write your own shell in C, similar to bash. No ...

  9. redis的3种过期键删除策略

    Redis的过期键的过期时间都保存在过期字典中,过期键的删除策略有三种,分别是定时删除.惰性删除和定期删除. 定时删除 定时删除策略,是指在设置键的过期时间的同时,创建一个定时器,让定时器在键的过期时 ...

  10. kali渗透综合靶机(四)--node1靶机

    kali渗透综合靶机(四)--node1靶机 靶机下载地址::https://download.vulnhub.com/node/Node.ova 一.主机发现 1.netdiscover -i et ...