hdu1495 倒水bfs
题目链接:http://icpc.njust.edu.cn/Problem/Hdu/1495/
题意:给定三个杯子S,M,N,满足S=M+N,现在要求用最短的次数将S杯中的饮倒平分到两个杯子中。我们首先想到这个问题需要用搜索来解决,由于杯子没有刻度,所以每次倒水都是要将一个杯子中的水倒光或者将另一个杯子倒满,我们就这样在状态空间中搜索,直到check通过。由于是根据倒水的次数进行的层次搜索,所以最终确定的倒水次数一定是最少的次数。这道题竟然因为“NO”的“O”没有大写被卡,心态爆炸,什么是否能不写奇奇怪怪的bug ~T^T。
代码如下:
- #include<bits/stdc++.h>
- using namespace std;
- typedef unsigned int ui;
- typedef long long ll;
- typedef unsigned long long ull;
- #define pf printf
- #define mem(a,b) memset(a,b,sizeof(a))
- #define prime1 1e9+7
- #define prime2 1e9+9
- #define pi 3.14159265
- #define lson l,mid,rt<<1
- #define rson mid+1,r,rt<<1|1
- #define scand(x) scanf("%llf",&x)
- #define f(i,a,b) for(int i=a;i<=b;i++)
- #define scan(a) scanf("%d",&a)
- #define dbg(args) cout<<#args<<":"<<args<<endl;
- #define inf 0x3f3f3f3f
- #define maxn 105
- int s,n,m,t;
- int ans=;
- int vol[];
- bool vis[maxn][maxn];//用两个杯子的容量即可确定三个被子的容量
- struct node{
- int v[],step;
- node(int a,int b,int c,int s){
- v[]=a,v[]=b,v[]=c,step=s;
- }
- node(){}
- };
- node cur,nxt;
- void pour(node &a,int i,int j)
- {
- int tmp=min(a.v[i],vol[j]-a.v[j]);
- a.v[i]-=tmp;
- a.v[j]+=tmp;
- }
- int bfs()
- {
- if(s%)return -;
- queue<node>q;
- q.push(node(s,,,));
- vis[s][]=;
- int k=s/;
- while(!q.empty())
- {
- cur=q.front();
- q.pop();
- if((cur.v[]==k&&cur.v[]==k)||(cur.v[]==k&&cur.v[]==k)||(cur.v[]==k&&cur.v[]==k))
- {
- // cout<<cur.v[0]<<cur.v[1]<<cur.v[2]<<endl;
- return cur.step;
- }
- f(i,,)
- f(j,,)
- {
- if(i==j)continue;
- nxt=cur;
- pour(nxt,i,j);
- if(!vis[nxt.v[]][nxt.v[]])
- {
- vis[nxt.v[]][nxt.v[]]=;
- nxt.step++;
- q.push(nxt);
- }
- }
- }
- return -;
- }
- int main()
- {
- //freopen("input.txt","r",stdin);
- //freopen("output.txt","w",stdout);
- std::ios::sync_with_stdio(false);
- while(scanf("%d%d%d",&s,&n,&m)&&s&&m&&n)
- {
- vol[]=s;
- vol[]=n;
- vol[]=m;
- mem(vis,false);
- ans=bfs();
- if(ans==-)
- {
- pf("NO\n");
- }
- else pf("%d\n",ans);
- }
- }
hdu1495 倒水bfs的更多相关文章
- HDU1495 非常可乐 —— BFS + 模拟
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1495 非常可乐 Time Limit: 2000/1000 MS (Java/Others) M ...
- hdu1495(bfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1495 题意:有三个杯子,开始时第一个杯子装满水(体积为a),倒来倒去,得到其中2个杯里的水的体积都为a ...
- 非常可乐(杭电hdu1495)bfs
非常可乐 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- hdu1495(经典bfs,平分水问题)
思路:搜索题,第一次做这种类型的题目吧,一开始表示不怎么明白题意所说的东东.其实就是要你判断可乐能不能被平分........ 有六种状态,从a瓶到b瓶,a-->c b-->a b- ...
- HDOJ1495(倒水BFS)
非常可乐 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- poj3414Pots(倒水BFS)
Pots Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13231 Accepted: 5553 Special J ...
- POJ 3414 Pots【bfs模拟倒水问题】
链接: http://poj.org/problem?id=3414 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22009#probl ...
- codevs1226倒水问题(Bfs)
/* 首先建立模型 可以看成是三个水杯 第三个无穷大 (这里看成是201足够了) 最少步数 想到Bfs 维护队列里的状态:要有个步数 还要有v :此时刻三个杯子有多少水 然后倒水:因为没有刻度 所以有 ...
- HDU 1495 非常可乐(BFS倒水问题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1495 题目大意:只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S<101) ...
随机推荐
- 360若真入股HTC 到底是谁来拯救谁
到底是谁来拯救谁" title="360若真入股HTC 到底是谁来拯救谁"> 我总是持有一种观点,那就是拯救是相互的.就像老师拯救"堕落"学生, ...
- 用java实现的微信公众号爬虫
Published: 2016-11-23 In Spider. tags: Spider 版权声明:本文为博主原创文章,未经博主允许不得转载. 思路: 直接从chuansong.me爬取,由于微信公 ...
- IPFS初窥
虽然区块链有很多令人兴奋的特性,但是也有其固有的缺点.比如,文件或者长度较长的文本信息就不适合存储在链上.那么如何解决这个缺点呢?一个解决方案就是IPFS(Interplanetary File Sy ...
- IP不是万能药 为何有蜘蛛侠等大片的索尼要放弃电影
为何有蜘蛛侠等大片的索尼要放弃电影"> 近年来,国内狂炒"IP"这一概念,比如动漫.网络文学.小说.游戏等,甚至围绕IP制造出内容矩阵.从一个IP延伸至多个领域 ...
- QIs for Spread
玩了好几天,看了好多剧,所以这几天的进度稍微有点慢,另外,<一起同过窗>真香! 延展特性涉及解集覆盖的区域.一个具有良好分布的解集应该包含来自PF每个部分的解集,而不遗漏任何区域.然而,大 ...
- Spring源码阅读笔记03:xml配置读取
前面的文章介绍了IOC的概念,Spring提供的bean容器即是对这一思想的具体实现,在接下来的几篇文章会侧重于探究这一bean容器是如何实现的.在此之前,先用一段话概括一下bean容器的基本工作原理 ...
- Web 项目刚要打包,却找不到项目资源?
编程无小事,不管是语言层面还是工具层面,都要熟悉,方能在编程中过程中众享丝滑,不然就随处卡顿,耗费时间不说,还没有任何成就感.撸码过程中用 Idea 也很多年了,工具或环境遇到问题,问下度娘就完事了, ...
- percona-toolkit 之 【pt-query-digest】介绍
背景: 做为一个MySQL DBA,分析慢查询是日常主要的工作之一,之前一直使用mysqlsla作为分析慢查询的, 因为简单并且也能满足自己对慢查询分析的要求,对于另一个工具pt-query-dige ...
- 沙雕与大婶 | Mock调你的外部依赖吧
故事背景: 沙雕在公司负责API项目的开发,很认真负责,经常加班加点赶进度,却常常被老板吐槽说他开发效率太低,他自己也很委屈,因为他所负责的项目常常依赖大量外部系统,他只好等对方开发完才一个个对接,开 ...
- MVC07
1. 讲解ASP.net MVC的I/O操作 新建一个控制台程序,输入代码如下 using System; using System.IO; namespace IO { class Program ...