【HDOJ】1495 非常可乐
bfs.
#include <iostream>
#include <queue>
#include <cstdio>
#include <cstring>
using namespace std; #define MAXN 105 bool visit[MAXN][MAXN][MAXN]; typedef struct node_t {
int x[];
int t;
node_t() {}
node_t(int xx, int yy, int ss, int tt) {
x[] = xx;
x[] = yy;
x[] = ss;
t = tt;
}
} node_t; int s, m, n; bool check(node_t d) {
int half = s>>; if ((d.x[]==half) && (d.x[]== || d.x[]==)) return true;
if ((d.x[]==) && (d.x[]==half)) return true; return false;
} int bfs() {
if (s & )
return -;
queue<node_t> Q;
int x[] = {m, n, s};
int i, j, k, tmp; memset(visit, false, sizeof(visit));
visit[][][s] = true;
Q.push(node_t(,,s,)); while (!Q.empty()) {
node_t d = Q.front();
Q.pop();
for (i=; i<; ++i) {
for (j=; j<; ++j) {
if (i == j)
continue;
node_t dd = d;
// from i to j
tmp = x[j] - dd.x[j];
if (tmp > ) {
if (dd.x[i] > tmp) {
dd.x[j] = x[j];
dd.x[i] -= tmp;
} else {
dd.x[j] += dd.x[i];
dd.x[i] = ;
}
}
if (visit[dd.x[]][dd.x[]][dd.x[]]) {
continue;
}
++dd.t;
visit[dd.x[]][dd.x[]][dd.x[]] = true;
if ( check(dd) )
return dd.t;
Q.push(dd);
}
}
} return -;
} int main() { #ifndef ONLINE_JUDGE
freopen("data.in", "r", stdin);
#endif while (scanf("%d%d%d",&s,&m,&n)!=EOF && (s||m||n)) {
int ans = bfs();
if (ans > )
printf("%d\n", ans);
else
printf("NO\n");
} return ;
}
【HDOJ】1495 非常可乐的更多相关文章
- hdoj 1495 非常可乐【bfs隐式图】
非常可乐 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- HDOJ 1495 非常可乐 【BFS】
非常可乐 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- 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 非常可乐
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=103711#problem/M /*BFS简单题 链接地址: http://acm.hdu ...
- HDU 1495 非常可乐 BFS 搜索
http://acm.hdu.edu.cn/showproblem.php?pid=1495 题目就不说了, 说说思路! 倒可乐 无非有6种情况: 1. S 向 M 倒 2. S 向 N 倒 3. N ...
- HDU ACM 1495 非常可乐(广搜BFS)
非常可乐 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissi ...
- HDU 1495 非常可乐 bfs 难度:1
http://acm.hdu.edu.cn/showproblem.php?pid=1495 第三个杯子的盛水量可由前两个杯子得到,而前两个杯子状态总数在100*100以内,穷举可实现 #includ ...
- HDU 1495 非常可乐(BFS倒水问题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1495 题目大意:只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S<101) ...
随机推荐
- Linux下tomcat使用
http://tomcat.apache.org/download-70.cgi这里下载 放到Linux目录下,解压开, 默认port:8080能够直接使用 经常使用启动命令catalina.sh ...
- 基于MyBatis的数据库切分框架,可实现数据的水平切分和垂直切分。 http://www.makersoft.org
https://github.com/makersoft/mybatis-shards MyBatis-Shards 专业的MyBatis数据库切分框架 MyBatis Shards简介 MyBati ...
- php 二维数组以树形输出(转)
<?php /** * @author Skyline * @copyright 2011 */ $cate = array(1=>array('id'=>1,'pid'=>0 ...
- oracle暂时表空间 ORA-01652:无法通过16(在表空间XXX中)扩展 temp 字段
今天在查数据的时候报错 ORA-01652:无法通过16(在表空间temp1中)扩展 temp 字段 查看表空间使用明细 SELECT b.tablespace, b.segfile# ...
- 专业DBA 遇到的问题集
http://blog.csdn.net/mchdba/article/category/1596355/3
- Notice : Soft open files now is 1024, We recommend greater than 10000
在研究 workerman 时, 报了这个错误, 感觉只是个notice级别的, 就一直给忽略掉了, 今天有时间, 就查了一下. 其实本质就是 ulimit 这个命令 打开一个命令行, 输入 ulim ...
- Linux基础系列—Linux内核源码目录结构
/** ****************************************************************************** * @author 暴走的小 ...
- python----------反射和设计模式
反射: 把字符串映动态射成对象内存地址. hasattr():判断一个对象里是否有对应的字符串的方法 getattr():根据字符串去获取obj对象里的对应方法的内存地址. class Dog(obj ...
- Java 8 Lambda表达式10个示例【存】
PS:不能完全参考文章的代码,请参考这个文件http://files.cnblogs.com/files/AIThink/Test01.zip 在Java 8之前,如果想将行为传入函数,仅有的选择就是 ...
- JDK小技巧
鉴于这段时间重新拾起Android,电脑上又是一大堆不同JDK版本的项目.来回切换JDK环境也够折磨人的. 不同版本JDK切换之后,java -version命令仍然显示的是之前的JDK版本,重启电脑 ...