链接:

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. 5.Appium+真机Demo

    1.连接真机后,执行代码时出现错误:A new session could not be created. (Original error: Could not extract PIDs from p ...

  2. GridView 绑定数据的常用指定格式。

    形式 语法 结果 注释 数字 {0:N2} 12.36   数字 {0:N0} 13   货币 {0:c2} $12.36   货币 {0:c4} $12.3656   货币 "¥{0:N2 ...

  3. Python基础之文件

    输出一行一行的,效率更高 一个任务: 主函数:

  4. linux Valgrind使用说明-内存泄漏

    Valgrind使用说明 Valgrind manual: http://valgrind.org/docs/manual/manual.html valgrind的介绍.安装和使用 valgrind ...

  5. ubuntu安装tushare

    sudo apt-get install python-pandas sudo pip install tushare

  6. solr跨core查询

    参考文档:这里的跨core不使用solrcloud http://wiki.apache.org/solr/CoreAdmin 注意:跨core查询功能相比单core查询,是有限制的   只需要在ur ...

  7. oreilly 用户故事地图

    这本书是完全买亏了,一点作用也没有. 整篇有用的字很少,还花了我¥16,总结如下: 用户故事模板: 作为用户角色(who),我想要某项功能(what),这样我可以 XXX(原因,why)

  8. views中class定义(类的写法)CBV

    from django.views import View class Home(View): def dispatch(self, request, *args, **kwargs): print( ...

  9. Symfony 从路由认识它

    经过上一篇文章之后,我们呢,可以访问这个默认的页面,你也会看到一堆高级的debug工具.好了,这次我们开始更多地了解这个symfony2.0. 首先我们要明白一点,Symfony2 的配置是一个着实很 ...

  10. Python3 sorted() 函数

    Python3 sorted() 函数  Python3 内置函数 描述 sorted() 函数对所有可迭代的对象进行排序操作. sort 与 sorted 区别: sort 是应用在 list 上的 ...