(中等) HDU 1495 非常可乐,BFS。
Description
#include<iostream>
#include<cstring> using namespace std; int que[],las,fir;
int A,B,C;
long long vis[][][]; bool judge(int x,int y,int z)
{
if(vis[x][y][z]==-)
return ;
return ;
} long long slove()
{
int temp,t1,t2,t3;
int base; las=fir=;
memset(vis,-,sizeof(vis)); que[las++]=A**+*+;
vis[A][][]=; while(las-fir)
{
temp=que[fir++]; t1=temp/(*);
t2=(temp/)%;
t3=temp%;
base=vis[t1][t2][t3];
if((t1==A/&&(t2==A/||t3==A/))||(t2==A/&&t3==A/))
return base; temp=min(t1,B-t2);
t1-=temp;
t2+=temp;
if(judge(t1,t2,t3))
{
vis[t1][t2][t3]=base+;
que[las++]=t1*(*)+t2*+t3;
}
t1+=temp;
t2-=temp; temp=min(t1,C-t3);
t1-=temp;
t3+=temp;
if(judge(t1,t2,t3))
{
vis[t1][t2][t3]=base+;
que[las++]=t1*(*)+t2*+t3;
}
t1+=temp;
t3-=temp; temp=min(t2,A-t1);
t2-=temp;
t1+=temp;
if(judge(t1,t2,t3))
{
vis[t1][t2][t3]=base+;
que[las++]=t1*(*)+t2*+t3;
}
t2+=temp;
t1-=temp; temp=min(t2,C-t3);
t2-=temp;
t3+=temp;
if(judge(t1,t2,t3))
{
vis[t1][t2][t3]=base+;
que[las++]=t1*(*)+t2*+t3;
}
t2+=temp;
t3-=temp; temp=min(t3,A-t1);
t3-=temp;
t1+=temp;
if(judge(t1,t2,t3))
{
vis[t1][t2][t3]=base+;
que[las++]=t1*(*)+t2*+t3;
}
t3+=temp;
t1-=temp; temp=min(t3,B-t2);
t3-=temp;
t2+=temp;
if(judge(t1,t2,t3))
{
vis[t1][t2][t3]=base+;
que[las++]=t1*(*)+t2*+t3;
}
t3+=temp;
t2-=temp;
} return -;
} int main()
{
ios::sync_with_stdio(false); long long ans; for(cin>>A>>B>>C;A+B+C;cin>>A>>B>>C)
{
if(A%)
ans=-;
else
ans=slove(); if(ans!=-)
cout<<ans<<endl;
else
cout<<"NO\n";
} return ;
}
(中等) HDU 1495 非常可乐,BFS。的更多相关文章
- HDU 1495 非常可乐 BFS 搜索
http://acm.hdu.edu.cn/showproblem.php?pid=1495 题目就不说了, 说说思路! 倒可乐 无非有6种情况: 1. S 向 M 倒 2. S 向 N 倒 3. N ...
- HDU 1495 非常可乐 bfs 难度:1
http://acm.hdu.edu.cn/showproblem.php?pid=1495 第三个杯子的盛水量可由前两个杯子得到,而前两个杯子状态总数在100*100以内,穷举可实现 #includ ...
- (step4.2.5)hdu 1495(非常可乐——BFS)
题目大意:输入三个整数 a,b,c. a : 可乐瓶的容量,b: 甲杯的容量 ,c: 乙杯的容量.问能否用这三个被来实现饮料的平分???如果可以输出倒饮料的次数, 否则输出NO 解题思路:BFS ...
- HDU 1495 非常可乐 BFS搜索
题意:有个为三个杯子(杯子没有刻度),体积为s,n,m,s=m+n, 刚开始只有体积为s的杯子装满可乐,可以互相倒,问你最少的次数使可乐均分,如果没有结果,输出-1; 分析:直接互相倒就完了,BFS模 ...
- HDU 1495 非常可乐 BFS
题目大意:中文题不说了. 题目思路:我有同学用GCD数论写出来的代码很简洁,但是很抱歉,数论蒟蒻,我觉得比赛的时候我没办法推出.如果用BFS的话思路很简单的,就是6方向广搜,只不过稍微麻烦点.具体看代 ...
- HDU - 1495 非常可乐 bfs互倒三杯水
非常可乐 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- BFS(倒水问题) HDU 1495 非常可乐
题目传送门 /* BFS:倒水问题,当C是奇数时无解.一共有六种情况,只要条件符合就入队,我在当该状态vised时写了continue 结果找了半天才发现bug,泪流满面....(网上找份好看的题解都 ...
- HDU 1495 非常可乐(数论,BFS)
非常可乐 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- 非常可乐---hdu 1495(BFS)
http://acm.hdu.edu.cn/showproblem.php?pid=1495 题意: 有3个杯子a b c:a=b+c:然后刚开始时只有a是满的,其它为空的,然后a b c三个之间互相 ...
随机推荐
- WPF InkCanvas 画图 基础使用教程
大家好,由于很多原因,我有很长一段时间没有在 CSDN 上分享我的学习成果了,如今终于可以回归分享之路了. 之前在做一个项目的时候,想在一个区域里绘制自己的图形,于是上网搜索资料,无意中找到了 Ink ...
- Android 项目开发
可以使用mapview.getMapCenter()获取当前可视范围中心点的坐标,然后计算出数据库中的点与中心点的距离值,如果该距离在触发显示的范围内(比如100米),就显示该点到地图上.百度地图的S ...
- Android OpenGL ES(九)绘制线段Line Segment .
创建一个DrawLine Activity,定义四个顶点: float vertexArray[] = { -0.8f, -0.4f * 1.732f, 0.0f, -0.4f, 0.4f * 1.7 ...
- linux C++通过ntp协议获取网络时间
转自:http://blog.csdn.net/ccjjyy/article/details/42871993 #include <stdio.h> #include <sys/ty ...
- GameUnity 2.0 文档(五) 人工智能之---------------Flocking算法 (聚集,分散,列队 )
AI是游戏的灵魂,是人物的智商,是让玩家觉得游戏是否幼稚的重要判断功能,下面我将介绍国外流行,国内不行的,ai算法. 主要介绍 Flocking 和 Reciprocal Velocity Obs ...
- HBase性能优化方法总结(一):表的设计
本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法.有关HBase系统配置级别的优化,可参考:淘宝Ken Wu同学的博客. 下面是本文总结的第一部分内容:表的设计相关的优化方法 ...
- try...catch...finally...return的四角恋
java里的try...catch...finally的三角恋关系众多程序员必然是不陌生的.但是他们三者再加上一个return的话,就会难倒一大片人吧.以前就对这个知道这个问题,没系统的总结一下,结果 ...
- android 5.0新特性学习--视图轮廓
ViewOutlineProvider -- 视图轮廓setOutlineProvider--可以使用View.setClipToOutline方法去剪切一个视图的outline区域.只有rectan ...
- 优化のzencart URL &zenid=.....
zencart URL后面带有一串&zenid=.....解决方案 发布时间:2013年3月16日 次浏览:106 经木木测试,此方法可用. ================= 最近一个客户的 ...
- 优化のzen cart调用WordPress
zen cart调用wordpress博客系统文章的方法 zencart根目录下新建blog 解压wp进去然后 wp-admin 安装 数据库共用 之前将wordpress和zencart整合起来 是 ...