链接:

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. PhoneGap下Web SQL实践

    HTML5里的Web SQL数据库,内置了SQLite数据库, 对数据库的操作使用executeSql执行增删改查 1. 创建数据库 function creatDatabase(){ db = op ...

  2. PAT 甲级 1011 World Cup Betting (20)(20 分)(水题,不用特别在乎精度)

    1011 World Cup Betting (20)(20 分) With the 2010 FIFA World Cup running, football fans the world over ...

  3. Air test 基于屏幕比例实现滑动的方法

    # -*- encoding=utf8 -*- __author__ = "chenshanju" __docs__ = "基于iOS类实现滑动" from a ...

  4. webkit内核的浏览器为什么removeAttribute('style')会失效?

    做了一些研究,应该算是理清了问题. 首先,我们在这里常说的「属性」(attributes)其实分为两种:内容属性(content attributes)以及 IDL 属性(IDL attributes ...

  5. [代码]multimap员工分组案例

    案例要求: //multimap 案例//公司今天招聘了 5 个员工,5 名员工进入公司之后,需要指派员工在那个部门工作//人员信息有: 姓名 年龄 电话 工资等组成//通过 Multimap 进行信 ...

  6. Spring Boot实践——Spring Boot 2.0 新特性和发展方向

    出自:https://mp.weixin.qq.com/s/EWmuzsgHueHcSB0WH-3AQw 以Java 8 为基准 Spring Boot 2.0 要求Java 版本必须8以上, Jav ...

  7. 【Directshow】IFilterGraph::AddFilter方法参数问题<转>

    看dx里dshow的例子和别人的程序,用IFilterGraph::AddFilter()这个API添加filter到Graph的时候,第二个参数是一个设备友好名称: 我看有的填的是通过IProper ...

  8. Educational Codeforces Round 54

    这套题不难,但是场上数据水,导致有很多叉点 A. 因为是让求删掉一个后字典序最小,那么当a[i]>a[i+1]的时候,删掉a[i]一定最优!这个题有个叉点,当扫完一遍如果没有满足条件的,就删去最 ...

  9. A simple way to crack VBA password in Excel file

    Unbelivibale, but I found a very simple way that really works! Do the follwoing: 1. Create a new sim ...

  10. DALSA网口线扫相机SDK开发详解例程(C#版)

    首先吐槽一句,官方的demos写的真的不好,坑爹啊.对于小白来说,开发官方demos为我所用太难了.为什么呢?因为它Dalsa的DALSA.SaperaLT.SapClassBasic.dll中,不仅 ...