http://acm.hdu.edu.cn/showproblem.php?pid=1495

搜索模拟出每此倒得情况就好,详情见代码\

(好困啊!!!!1)

 #include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
#define M 111
#define min(a,b) a<b?a:b
struct point{
int v[];
int time;
};
int res[],vis[M][M];
int bfs()
{
memset(vis,,sizeof(vis));
queue<point>Q;
point now,next;
now.v[]=;now.v[]=;now.v[]=res[];、、初始情况
now.time=;
vis[now.v[]][]=;、、记录瓶子和大杯子的情况,避免重复
Q.push(now);
while (!Q.empty())
{
now=Q.front();
Q.pop();
if (now.v[]==now.v[]&&now.v[]*==res[])
return now.time;
for (int i=;i<=;i++)
{
for (int j=;j<=;j++)
{
if (i==j) continue;
int temp=min(now.v[i],res[j]-now.v[j]);、、选取能够倒的睡的体积
for (int k=;k<=;k++)
next.v[k]=now.v[k];
next.v[i]-=temp;
next.v[j]+=temp;
if (vis[next.v[]][next.v[]]) continue;
vis[next.v[]][next.v[]]=;
next.time=now.time+;
Q.push(next);
}
}
}
return -;
}
int main()
{
while (~scanf("%d %d %d",&res[],&res[],&res[]))
{
if (!res[]&&!res[]&&!res[]) break;
if (res[]%){ 、、如果总数不能被平分那么肯定是不行的
printf("NO\n");
continue;
}
if (res[]>res[]) swap(res[],res[]);、、因为一般情况下这两个都是一大一小的,一个大于一半,一个小于一半,最后如果分出来了肯定是一半在瓶子里一半在打的那个杯子里,所以需要先找出哪个杯子是大的哪个是小的
int x=bfs();
if (x==-) printf("NO\n");
else printf("%d\n",x);
}
return ;
}

hdu 1495 (搜索) 非常可乐的更多相关文章

  1. 【HDU - 1495】非常可乐

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

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

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

  3. 【BFS】HDU 1495

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

  4. hdu 5887 搜索+剪枝

    Herbs Gathering Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  5. hdu 5636 搜索 BestCoder Round #74 (div.2)

    Shortest Path  Accepts: 40  Submissions: 610  Time Limit: 4000/2000 MS (Java/Others)  Memory Limit: ...

  6. Square HDU 1518 搜索

    Square HDU 1518 搜索 题意 原题链接 给你一定若干个木棒,让你使用它们组成一个四边形,要求这些木棒必须全部使用. 解题思路 木棒有多种组合方式,使用搜索来进行寻找,这里需要进行优化,不 ...

  7. HDU 1495 非常可乐 BFS 搜索

    http://acm.hdu.edu.cn/showproblem.php?pid=1495 题目就不说了, 说说思路! 倒可乐 无非有6种情况: 1. S 向 M 倒 2. S 向 N 倒 3. N ...

  8. HDU 1495 非常可乐 BFS搜索

    题意:有个为三个杯子(杯子没有刻度),体积为s,n,m,s=m+n, 刚开始只有体积为s的杯子装满可乐,可以互相倒,问你最少的次数使可乐均分,如果没有结果,输出-1; 分析:直接互相倒就完了,BFS模 ...

  9. kuangbin专题 专题一 简单搜索 非常可乐 HDU - 1495

    题目链接:https://vjudge.net/problem/HDU-1495 题意:有两个空杯(分别是N升和M升)和一罐满的可乐S升,S = N + M,三个容器可以互相倾倒,如果A倒入B,只有两 ...

随机推荐

  1. listview点击checkbox,修改值

    1.初始化控件 listView1.Items.Clear();            listView1.Columns.Clear();            ColumnHeader ch = ...

  2. python小数据池概念以及具体范围

    =   赋值符号:        ==  比较值是否相等:   is  比较,比较的是内存地址      ID(内容) 数字,字符串的小数据池 小数据池现象产生的原因,作用: 为了节省内存空间. &l ...

  3. linux安装memcached和php的memcache扩展 (已使用)

    所需软件libevent-1.4.6-stable.tar.gz (http://monkey.org/~provos/libevent/)memcache-2.2.3.tgz (http://pec ...

  4. 2017面向对象程序设计(Java) 第4周学习指导及要求(2017.9.14-2017.9.18)

    学习目标 深入理解程序设计中算法与程序的关系: 深入理解java程序设计中类与对象的关系: 理解OO程序设计的第一个特征:封装: 需要掌握基本使用方法的预定义类有:Math类.String类.Arra ...

  5. C++字符串和向量

    陷阱:C字符串使用=和== char a_string[10]; a_string="Hello"  非法 strcpy(a_string,"Hello");  ...

  6. 如何区分Java中的方法重载和重写

    首先说的是重载: 方法的重载 * 在同一个类中,方法名相同,参数列表不同.与返回值类型无关. * 参数列表不同: * A:参数个数不同 * B:参数类型不同 * C:参数的顺序不同(不算重载 报错) ...

  7. Python之 ---成员修饰符

    一:成员修饰符:分为共有成员和私有成员: 私有成员:__通过两个下滑线:无法直接访问,要访问只能间接访问: 如下我们定义了一个对象,里面有两个共有的成员变量,成员变量是共有的时候我们可以外部访问,如果 ...

  8. jxls2 java.lang.NegativeArraySizeException

    某个单元格使用jx:each报这个错误. 内部代码,创建一个二维数组时,传了一个负值进去 解决办法 将这个单元格删除,重新编写批注

  9. FPGA基础知识1

    1.乘法 在FPGA中,乘法运算可以分为 1)信号与信号之间的运算,用乘法器核实现: 2)常数与信号之间的运算,利用移位及加减法实现. A x 16 = A左移4位: A x 20 = A x 16  ...

  10. python读写文件中read()、readline()和readlines()的用法

    python中有三种读取文件的函数: read() readline() readlines() 然而它们的区别是什么呢,在平时用到时总会遇到,今天总结一下. 0. 前期工作 首先新建一个文件read ...