链接:

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

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 7620    Accepted Submission(s): 3050

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

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <queue> using namespace std; #define maxn 110 struct node
{
int a, b, c, step;
}; int S, N, M, vis[maxn][maxn][maxn]; int BFS()
{
node p, q;
p.a=S, p.b=, p.c=, p.step=; memset(vis, , sizeof(vis));
vis[S][][] = ; queue<node>Q;
Q.push(p); while(Q.size())
{
p = Q.front(), Q.pop(); if((p.a==S/&&p.b==S/) || (p.b==S/&&p.c==S/) || (p.a==S/&&p.c==S/)) return p.step; for(int i=; i<; i++)
{
if(i==) /// a->b
{
if(p.a+p.b>N)
{
q.a = p.a+p.b-N;
q.b = N;
}
else
{
q.a = ;
q.b = p.a+p.b;
}
q.c = p.c;
}
else if(i==) /// a->c
{
if(p.a+p.b>M)
{
q.a = p.a+p.c-M;
q.c = M;
}
else
{
q.a = ;
q.c = p.a+p.c;
}
q.b = p.b;
}
else if(i==) /// b->a
{
if(p.b+p.a>S)
{
q.b = p.b+p.a-S;
q.a = S;
}
else
{
q.b = ;
q.a = p.b+p.a;
}
q.c = p.c;
}
else if(i==) /// b->c
{
if(p.b+p.c>M)
{
q.b = p.b+p.c-M;
q.c = M;
}
else
{
q.b = ;
q.c = p.b+p.c;
}
q.a = p.a;
}
else if(i==) /// c->a
{
if(p.c+p.a>S)
{
q.c = p.c+p.a-S;
q.a = S;
}
else
{
q.c = ;
q.a = p.c+p.a;
}
q.b = p.b;
}
else if(i==) /// c->b
{
if(p.c+p.b>N)
{
q.c = p.c+p.b-N;
q.b = N;
}
else
{
q.c = ;
q.b = p.c+p.b;
}
q.a = p.a;
}
q.step = p.step+;
if(!vis[q.a][q.b][q.c])
{
vis[q.a][q.b][q.c]=;
Q.push(q);
}
}
}
return -;
} int main()
{
while(scanf("%d%d%d", &S, &N, &M), S+N+M)
{
if(S%)
{
printf("NO\n");
continue;
} int ans = BFS();
if(ans==-)
printf("NO\n");
else
printf("%d\n", ans); }
return ;
}

(广搜)可口可乐 -- hdu -- 1495的更多相关文章

  1. hdu 1495 非常可乐 (广搜)

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

  2. HDU 1495 非常可乐 (只是转了个弯的广搜题)

    N - 非常可乐 =========================================================================================== ...

  3. hdu 5025 Saving Tang Monk 状态压缩dp+广搜

    作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4092939.html 题目链接:hdu 5025 Saving Tang Monk 状态压缩 ...

  4. hdu 5094 Maze 状态压缩dp+广搜

    作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4092176.html 题目链接:hdu 5094 Maze 状态压缩dp+广搜 使用广度优先 ...

  5. Combine String HDU - 5707 dp or 广搜

    Combine String HDU - 5707 题目大意:给你三个串a,b,c,问a和b是不是恰好能组成c,也就是a,b是不是c的两个互补的子序列. 根据题意就可以知道对于c的第一个就应该是a第一 ...

  6. HDU 5652(二分+广搜)

    题目链接:http://acm.hust.edu.cn/vjudge/contest/128683#problem/E 题目大意:给定一只含有0和1的地图,0代表可以走的格子,1代表不能走的格 子.之 ...

  7. hdu 1242:Rescue(BFS广搜 + 优先队列)

    Rescue Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submis ...

  8. hdu 1195:Open the Lock(暴力BFS广搜)

    Open the Lock Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  9. HDU 1253 (简单三维广搜) 胜利大逃亡

    奇葩!这么简单的广搜居然爆内存了,而且一直爆,一直爆,Orz 而且我也优化过了的啊,尼玛还是一直爆! 先把代码贴上睡觉去了,明天再来弄 //#define LOCAL #include <ios ...

随机推荐

  1. bzoj2875随机数生成器

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2875 矩阵乘裸题. 如果直接乘的话会爆long long,所以用加法代替乘,过程中不断取模. ...

  2. Intellij Idea上Spring Boot编译报错:Error:(3, 32) java: 程序包org.springframework.boot不存在

    很尴尬,为了使用Spring Boot的Initializr,特意下了个Intellij Idea,刚按提示新建一个Spring Boot的Maven项目后,就出现红叉叉了.因为IDE是新的,开始是M ...

  3. The type org.springframework.context.support.AbstractApplicationContext cannot be resolved

    在 myeclipse中,使用 jdk6和7,并使用 spring-framework-5.0.2.RELEASE 时,编写代码: import org.springframework.context ...

  4. sdk manager 代理,解决下载速度慢的问题

    原文:http://blog.csdn.net/android_panda/article/details/18598883 地址:mirrors.neusoft.edu.cn 端口:80 要勾选:F ...

  5. LAMP的安装和注意事项

    LAMP--Linux+Apache(httpd)+MySQL+PHP,是常用的web服务器架构,下面接受编译安装的过程,以及出现的错误. 注意事项: 1. 扩展epel源:参照:http://www ...

  6. display:table; 也可以实现 div 始终和内包的图片大小相同

    display:table; 也可以实现 div 始终和内包的图片大小相同

  7. varnish/squid/nginx cache 有什么不同?

    SQUID 是功能最全面的,但是架构太老,性能不咋的Varnish 是内存缓存,速度一流,但是内存缓存也限制了其容量,缓存页面和图片一般是挺好的Nginx 本来是反向代理/web服务器,用了插件可以做 ...

  8. django之模型

    ORM简介 MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库 ORM是“对象-关系-映射”的简称 ...

  9. Python实践练习:疯狂填词

    题目 创建一个疯狂填词(Mad Libs)程序,它将读入文本文件,并让用户在该文本文件中出现 ADJECTIVE.NOUN.ADVERB 或 VERB 等单词的地方,加上他们自己的文本. 例如,一个文 ...

  10. springboot 默认错误处理--自定义

    1.在resoures下创建resoures/error文件夹 在其中自定义:404.html    403.html  500.html