HDU 1495 非常可乐(隐式图搜索)
2014-08-29 18:58
316 查看
非常可乐
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
Author
seeyou
解析:bfs进行模拟比较简单,但是我做这题的时候把题目给看错了,看成是初始装在第三个杯子中,可题目说是在第一杯水中,因为这个失误WA了好多次。都是怪我没有认真审题。
#include <stdio.h> #include <string.h> #include <queue> #include <algorithm> using namespace std; struct Node { int v[3],dist; }; const int MAXN = 100 + 5; int vis[MAXN][MAXN],jug[3]; bool judge(int a,int b,int c) { if(a == b && a == jug[0]/2) { return true; } if(a == c && a == jug[0]/2) { return true; } if(b == c && b == jug[0]/2) { return true; } return false; } int bfs() { memset(vis,0,sizeof(vis)); queue<Node> q; Node start; start.dist = 0; start.v[0] = jug[0]; start.v[1] = 0; start.v[2] = 0; q.push(start); vis[jug[0]][0] = true; while(!q.empty()) { Node front = q.front(); q.pop(); if(judge(front.v[0],front.v[1],front.v[2])) { return front.dist; } for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { if(i == j) { continue; } if(!front.v[i] || front.v[j] == jug[j]) { continue; } int amount = min(front.v[i],jug[j] - front.v[j]); Node tmp; memcpy(&tmp,&front,sizeof(front)); tmp.dist = front.dist + 1; tmp.v[i] -= amount; tmp.v[j] += amount; if(!vis[tmp.v[0]][tmp.v[1]]) { vis[tmp.v[0]][tmp.v[1]] = true; q.push(tmp); } } } } return 0; } int main() { while(scanf("%d%d%d",&jug[0],&jug[1],&jug[2]) != EOF && (jug[0] || jug[1] || jug[2])) { if(jug[0] % 2) { printf("NO\n"); continue; } int ans = bfs(); if(ans) { printf("%d\n",ans); }else { printf("NO\n"); } } return 0; }
相关文章推荐
- HDU 1495 非常可乐!!!(隐式图状态搜索+bfs+map状态查重)
- HDU 1495 非常可乐【隐式图搜索,BFS】
- [kuangbin带你飞]专题一 简单搜索M - 非常可乐(HDU 1495)
- HDU 1495 非常可乐 BFS 搜索
- HDU 1495 非常可乐 BFS搜索
- HDU 1495 非常可乐 (kuangbin带你飞 专题一:简单搜索)
- 搜索专题(BFS)HDU 1495-非常可乐
- HDU 1495 非常可乐(隐式图的遍历)
- HDU 1495 非常可乐(搜索)
- HDU 1495 非常可乐 BFS搜索 TWT Tokyo Olympic 4combo-1
- HDU 1495 非常可乐([kuangbin带你飞]专题一 简单搜索)
- [kuangbin带你飞]专题一 简单搜索 M - 非常可乐 HDU 1495
- HDU - 1495 非常可乐(15.10.10 搜索专题)bfs
- hdu 1495 非常可乐 广搜
- HDU 1495 非常可乐(广搜)
- hdu 1495 非常可乐(简单的的bfs)
- hdu 1495 非常可乐
- HDU 1495 非常可乐 广度优先搜索(BFS)
- hdu 1495——非常可乐
- HDU-1495-非常可乐