题意  将体积为s的可乐  利用容积分别为n和m的两个杯子平均分为两份  至少须要倒多少次可乐

能够把容器s,n,m中装的可乐量看成一种状态

容器都是没有刻度的  所以每次倒可乐要么把自己倒完 要么把对方倒满

每种状态能够通过一次倒水到达哪些状态  于是能够通过bfs推断到达每种状态须要倒多少次

3个容器中有一个装的可乐为s/2的状态就是答案了  s是奇数时明显不可能平分的  能够直接忽略

#include <cstdio>
#include <cstring>
using namespace std;
const int N = 105;
int v[N][N][N], n, m, s, le, ri; struct state {
int a, b, c, d;
state() {}
state(int e, int f, int g, int h)
: a(e), b(f), c(g), d(h) {}
} q[N * N * N]; void pour(int a, int b, int c, int d)
{
if(!v[a][b][c])
{
v[a][b][c] = 1;
q[ri++] = state(a, b, c, d + 1);
}
} int bfs()
{
int a, b, c, d;
le = ri = 0;
q[ri++] = state(s, 0, 0, 0);
memset(v, 0, sizeof(v));
v[s][0][0] = 1;
while(le < ri)
{
a = q[le].a, b = q[le].b, c = q[le].c, d = q[le++].d;
if(a == s / 2 || b == s / 2 || c == s / 2)
return d + (a && b && c != 0);
pour(a - n + b, n, c, d); //s->n:
pour(a - m + c, b, m, d); //s->m;
pour(a + b, 0, c, d); //n->s;
pour(a + c, b, 0, d); //m->s;
if(b > m - c) pour(a, b - m + c, m, d); //n->m
else pour(a, 0, b + c, d);
if(c > n - b) pour(a, n, c - n + b, d); //m->n
else pour(a, b + c, 0, d);
}
return 0;
} int main()
{
int ans;
while(scanf("%d%d%d", &s, &n, &m), n)
{
ans = 0;
if (s % 2 == 0) ans = bfs();
if(!ans) puts("NO");
else printf("%d\n", ans);
}
return 0;
}

很可乐

Problem Description
大家一定觉的运动以后喝可乐是一件非常满意的事情,可是seeyou却不这么觉得。

由于每次当seeyou买了可乐以后。阿牛就要求和seeyou一起分享这一瓶可乐。并且一定要喝的和seeyou一样多。但seeyou的手中仅仅有两个杯子,它们的容量各自是N 毫升和M 毫升 可乐的体积为S (S<101)毫升 (正好装满一瓶) ,它们三个之间能够相互倒可乐 (都是没有刻度的,且 S==N+M,101>S>0,N>0,M>0) 。聪明的ACMER你们说他们能平分吗?假设能请输出倒可乐的最少的次数,假设不能输出"NO"。

 
Input
三个整数 : S 可乐的体积 , N 和 M是两个杯子的容量,以"0 0 0"结束。
 
Output
假设能平分的话请输出最少要倒的次数,否则输出"NO"。

 
Sample Input
7 4 3
4 1 3
0 0 0
 
Sample Output
NO
3
 

HDU 1495 很可乐(BFS 倒水问题)的更多相关文章

  1. HDU 1495 很可乐 (DFS)

    题目链接:很可乐 解析:一个瓶子,容量为s.两个杯子,容量分别为n和m,问最少多少次倾倒才干将一瓶可乐均分为两份. 直接模拟每次的倾倒.然后递归求解. 能够加个预判的条件,要是s是奇数的时候,不管怎样 ...

  2. HDU 1495 非常可乐(BFS倒水问题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1495 题目大意:只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S<101) ...

  3. HDU 1495 非常可乐【BFS/倒水问题】

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

  4. HDU 1495 非常可乐【BFS】

    题目链接:https://vjudge.net/problem/HDU-1495 转载于:https://www.cnblogs.com/ECJTUACM-873284962/p/6750320.ht ...

  5. HDU - 1495 非常可乐 【BFS】

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1495 思路 首先 如果可乐的体积 是奇数 那么是无解的 然后 如果能够得到两杯 都是一般容量的可乐 那 ...

  6. (中等) HDU 1495 非常可乐,BFS。

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

  7. HDU.1495 非常可乐 (BFS)

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

  8. BFS(倒水问题) HDU 1495 非常可乐

    题目传送门 /* BFS:倒水问题,当C是奇数时无解.一共有六种情况,只要条件符合就入队,我在当该状态vised时写了continue 结果找了半天才发现bug,泪流满面....(网上找份好看的题解都 ...

  9. 【BFS】HDU 1495

    直达–> HDU 1495 非常可乐 相似题联动–>POJ 3414 Pots 题意:中文题,不解释. 思路:三个杯子倒来倒去,最后能让其中两个平分即可.可能性六种.判定的时候注意第三个杯 ...

随机推荐

  1. updatedb---创建或更新slocate命令所必需的数据库文件

    updatedb命令用来创建或更新slocate命令所必需的数据库文件.updatedb命令的执行过程较长,因为在执行时它会遍历整个系统的目录树,并将所有的文件信息写入slocate数据库文件中. 补 ...

  2. Unity Shader (四)片段程序示例

      1.环境光+漫反射+高光+点光源 Shader "Custom/Example_Frag_1" { properties { _MainColor(,,,) _Specular ...

  3. IDEA使用GIT 上传到GitHub

    1.下载Git https://www.git-scm.com/download/ 2.安装 3.IDEA配置Git(设置Git路径,点击Test),如下代表成功 4.创建仓库 5.add 6.pus ...

  4. Eclipse反编译插件 Enhanced Class Decompiler

    因为jar包中的源码都是经过反编译的,所以需要安装插件才能查看到源码,此处介绍的是 Enhanced Class Decompiler 插件. 打开Eclipse,Help --> Eclips ...

  5. Qt之图形(转换)

    简述 QTransform类指定坐标系的2D转换,可以指定平移.缩放.扭曲(剪切).旋转或投影坐标系.绘制图形时,通常会使用. QTransform与QMatrix的不同之处在于,它是一个真正的3x3 ...

  6. leetcode第一刷_Text Justification

    这个题的接受率好低,搞得我一直不敢做.后来认真的看了一下题目,不是非常难嘛.字符串的题目ac率就是低,除了难,还由于它的測试用例太多. 思路不难,主要是由于特殊情况太多.纯模拟,我把全部的情况罗列一下 ...

  7. android-Animation进阶(创造用户舒服的动画)

    android中经常使用的动画有Animation ,Animator两种; ---第1种经常使用的是使用在Activity切换中.比方打开一个Activity.关闭一个Activity 个人比較喜欢 ...

  8. DDR工作原理

    DDR SDRAM全称为Double Data Rate SDRAM,中文名为“双倍数据流SDRAM”.DDR SDRAM在原有的SDRAM的基础上改进而来.也正因为如此,DDR能够凭借着转产成本优势 ...

  9. Hue的三大特点、三大功能和架构

    不多说,直接上干货! Hue 是 Cloudera 的大数据 Web 工具 官方访问网站 : http://gethue.com/ GitHub : https://github.com/cloude ...

  10. 实时监控Cat之旅~分布式消息树的实现原理与测试

    大众点评的老吴在InfoQ上讲了Cat之后,有不少同仁开始关注这个实时监控系统,但学习的文章甚少,在GitHub上也是一言代过,给我们这些开发人员留下了N多个疑问,一时间不知道去哪里问,向谁去问了,通 ...