Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

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
 
简单的BFS,模拟倒水,(相当于枚举)
 
 #include<cstdio>
#include<string.h>
using namespace std;
int s,n,m,pre[][],ans[];
int vis[][];
int ans1;
void bfs()
{
int first=,end=,a,b,c;
pre[end][]=s;
pre[end][]=;
pre[end++][]=;
vis[s][]=;
while(first<end)
{
a=pre[first][];
b=pre[first][];
c=pre[first][];
if((a==b&&c==)||(a==c&&b==)||(b==c&&a==))
{
ans1 =ans[first];
return;
}
int a1,b1,c1;
if(a+b>=n)
{
a1=a+b-n;
b1=n;
c1=c;
}
else{
b1=a+b;
a1=;
c1=c;
}
if(vis[a1][b1]==)
{
vis[a1][b1]=;
pre[end][]=a1;
pre[end][]=b1;
pre[end][]=c1;
ans[end++]=ans[first]+;
}
if(a+c>=m)
{
a1=a+c-m;
c1=m;
b1=b;
}
else{
c1=a+c;
a1=;
b1=b;
}
if(vis[a1][b1]==)
{
vis[a1][b1]=;
pre[end][]=a1;
pre[end][]=b1;
pre[end][]=c1;
ans[end++]=ans[first]+;
}
if(b+a>=s)
{
a1=s;
b1=;
c1=c;
}
else{
a1=a+b;
b1=;
c1=c;
}
if(vis[a1][b1]==)
{
vis[a1][b1]=;
pre[end][]=a1;
pre[end][]=b1;
pre[end][]=c1;
ans[end++]=ans[first]+;
}
if(b+c>=m)
{
b1=b+c-m;
c1=m;
a1=a;
}
else{
c1=b+c;
b1=;
a1=a;
}
if(vis[a1][b1]==)
{
vis[a1][b1]=;
pre[end][]=a1;
pre[end][]=b1;
pre[end][]=c1;
ans[end++]=ans[first]+;
}
if(c+a>=s)
{
a1=s;
c1=;
b1=b;
}
else{
a1=a+c;
c1=;
b1=b;
}
if(vis[a1][b1]==)
{
vis[a1][b1]=;
pre[end][]=a1;
pre[end][]=b1;
pre[end][]=c1;
ans[end++]=ans[first]+;
}
if(c+b>=n)
{
c1=c+b-n;
b1=n;
a1=a;
}
else{
b1=b+c;
c1=;
a1=a;
}
if(vis[a1][b1]==)
{
vis[a1][b1]=;
pre[end][]=a1;
pre[end][]=b1;
pre[end][]=c1;
ans[end++]=ans[first]+;
}
first++;
} }
int main()
{
while(scanf("%d %d %d",&s,&n,&m)&&(s+n+m))
{
if(s%)
{
printf("NO\n");
continue;
}
ans1=;
memset(vis,,sizeof(vis));
bfs();
if(ans1) printf("%d\n",ans1);
else printf("NO\n");
}
return ;
}

G - 非常可乐的更多相关文章

  1. Storyboards Tutorial 03

    这一节主要介绍segues,static table view cells 和 Add Player screen 以及 a game picker screen. Introducing Segue ...

  2. 文件图标SVG

    ​<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink ...

  3. [转]Linux下g++编译与使用静态库(.a)和动态库(.os) (+修正与解释)

    在windows环境下,我们通常在IDE如VS的工程中开发C++项目,对于生成和使用静态库(*.lib)与动态库(*.dll)可能都已经比较熟悉,但是,在linux环境下,则是另一套模式,对应的静态库 ...

  4. CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)

    ---恢复内容开始--- CentOS 6.6 升级GCC G++ (当前最新GCC/G++版本为v6.1.0) 没有便捷方式, yum update....   yum install 或者 添加y ...

  5. Linux deepin 下sublimes配置g++ openGL

    参考 :http://blog.csdn.net/u010129448/article/details/47754623 ubuntu 下gnome只要将代码中deepin-terminal改为gno ...

  6. [翻译svg教程]svg 中的g元素

    svg 中的<g>元素用来组织svg元素.如果一组svg元素被g元素包裹了,你可以通过对g元素进行变换(transform),被g元素包裹的元素也将被变换,就好这些被svg包裹的元素是一个 ...

  7. 软件工程:黄金G点小游戏1.0

    我们要做的是黄金G点小游戏: N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值. ...

  8. 2016huasacm暑假集训训练五 G - 湫湫系列故事——减肥记I

    题目链接:http://acm.hust.edu.cn/vjudge/contest/126708#problem/G 这是一个01背包的模板题 AC代码: #include<stdio.h&g ...

  9. 毫秒级的时间处理上G的图片(生成缩略图)

    测试环境: 测试图片(30M): 测试计时方法: Stopwatch sw1 = new Stopwatch(); sw1.Start(); //TODO...... sw1.Stop(); stri ...

随机推荐

  1. Html.DropDownList

    //获取直属父级列表 var parents = _MemberEditDTOService.GetParents(); var parentsItems = parents.Result.Selec ...

  2. whereis 和which

    这两个命令用的好,可以很快找出文件的路径 [root@oc3408554812 zip-3.0]# which passwd/usr/bin/passwd[root@oc3408554812 zip- ...

  3. VBA续嘘嘘

    什么是VBA?它有什么作用? A.实现Excel中没有实现的功能. B.提高运行速度. C.编写自定义函数. D.实现自动化功能. E.通过插入窗体做小型管理软件. VBA在哪里存放的?怎么运行? A ...

  4. Nginx配置单主机多域名

    http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; ...

  5. golang实现冒泡排序

    //BubbleSort.go package main import "fmt" func main() { , , , , , , , , ,} fmt.Println(val ...

  6. pytho简单爬虫_模拟登陆西电流量查询_实现一键查询自己的校园网流量

    闲来无事,由于校园内网络是限流量的,查询流量很是频繁,于是萌生了写一个本地脚本进行一键查询自己的剩余流量. 整个部分可以分为三个过程进行: 对登陆时http协议进行分析 利用python进行相关的模拟 ...

  7. c# UrlEncode,UrlDecode

    用 C#  winform  处理 utf-8,gb2312编码转换方法 首先,在项目属性 的  应用程序——目标框架中,选择 .NET Framework 4 然后再添加引用——.NET 中选择  ...

  8. Http的Get/Post请求区别

    1.HTTP请求格式: <request line> <headers> <blank line> [<request-body>] 在HTTP请求中, ...

  9. 一个比较综合的项目--》>图片缓存,下拉刷新等

    在办公室电脑(E:\workspace\23\Collections)

  10. C# 学习电子书资料分享mobi epub等格式

    .NET之美:.NET关键技术深入解析 作者: 张子阳 出版社:机械工业出版社 大小:20.29MB 出版时间:14-01-01 格式:mobi ASP.NET 4权威指南 作者: 马伟 出版社: 大 ...