HDU1495 非常可乐
解题思路:简单的宽搜,见代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
const int maxn = ;
int S, n, m, cap[], vis[maxn][maxn]; struct node{
int v[];//每个子装的水
int cnt; //倒水的次数
bool friend operator < (node A, node B){
return A.cnt > B.cnt; //cnt越小,优先级越高
}
}s, e; priority_queue<node> q; //优先队列 int bfs()
{
while(!q.empty()) q.pop();
q.push(s); while(!q.empty())
{
s = q.top(); q.pop();
// printf("s.cnt = %d\n", s.cnt); //太大意,因为这行没注释,WA了一发 //n杯子和s杯子各有一半可乐时返回倒水次数
if(s.v[] == S / && s.v[] == S / ) return s.cnt; //i杯子往j杯子里面倒水
for(int i = ; i < ; i++)
for(int j = ; j < ; j++)
{
if(i == j) continue; //不能往自己的杯子倒水
//如果i杯子是空的或者j杯子已满,则不用倒水
if(s.v[i] == || s.v[j] == cap[j]) continue; int t = min(s.v[i], cap[j] - s.v[j]); //自己思考这一步
e = s; //这步不能忘了
e.v[i] = s.v[i] - t, e.v[j] = s.v[j] + t, e.cnt = s.cnt + ;
if(!vis[e.v[]][e.v[]]) //没访问过
{
vis[e.v[]][e.v[]] = ; //标记为已经访问
q.push(e);
}
}
}
return -; //若没有符合条件的,则返回-1
} int main()
{
while(~scanf("%d %d %d", &S, &n, &m) && (S || n || m))
{
if(S % ) //s为奇数,则不可能均分
{
printf("NO\n");
continue;
} if(n == m) //n等于m时,直接把一个杯子倒满即可
{
printf("1\n");
continue;
}
int tmp;
//初始化n为更大的杯子
if(m > n) tmp = n, n = m, m = tmp;
memset(vis, , sizeof(vis)); cap[] = n, cap[] = m, cap[] = S;
s.v[] = , s.v[] = , s.v[] = S, s.cnt = ;
vis[][] = ; int ans = bfs(); if(ans == -) printf("NO\n");
else printf("%d\n", ans);
}
return ;
}
HDU1495 非常可乐的更多相关文章
- HDU-1495 非常可乐(BFS)
广搜的灵活应用题: 非常可乐 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- HDU1495 非常可乐 —— BFS + 模拟
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1495 非常可乐 Time Limit: 2000/1000 MS (Java/Others) M ...
- HDU-1495 非常可乐 (嵌套结构体-广搜 对比 一般广搜)
题意 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多.但 ...
- HDU1495 非常可乐(BFS/数论)
大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多.但see ...
- HDU小小练
hdu1253胜利大逃亡(bfs) 题意:就是城堡问题,找出可通行路径即可 思路:三维BFS,设定前后上下左右6个方向搜索,注意开始的时候人站的位置可以是墙. hdu1495非常可乐(bfs) 题意: ...
- 非常可乐(杭电hdu1495)bfs
非常可乐 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- 非常可乐 HDU1495
BFS题 一共有六种状态转移 一一枚举就好 设置一个标记数组. 用二重循环可以很清晰的解决代码长的问题 #include<cstdio> #include<cstring> # ...
- 【HDU - 1495】非常可乐
-->非常可乐 Descriptions: 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一 ...
- hdoj 1495 非常可乐【bfs隐式图】
非常可乐 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
随机推荐
- [C++]类的继承与派生
继承性是面向对象程序设计的第二大特性,它允许在既有类的基础上创建新类,新类可以继承既有类的数据成员和成员函数,可以添加自己特有的数据成员和成员函数,还可以对既有类中的成员函数重新定义.利用类的继承和派 ...
- lintcode:买卖股票的最佳时机 IV
买卖股票的最佳时机 IV 假设你有一个数组,它的第i个元素是一支给定的股票在第i天的价格. 设计一个算法来找到最大的利润.你最多可以完成 k 笔交易. 注意事项 你不可以同时参与多笔交易(你必须在再次 ...
- 【Apache运维基础(4)】Apache的Rewrite攻略(1)
简述 Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言.可基于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式.如果要想用到rewrite模块 ...
- 8 simple things that will make you sexy
8 simple things that will make you sexy8种方法教你不动声色的性感What makes a women sexy? Is it her body? Is it t ...
- Java-在线聊天系统-非线程
一.概述 1.目标:建立基于tcp协议的聊天系统 2.思路:用java socket编程 二.代码 1.ChatServer.java import java.io.DataInputStream; ...
- 《jQuery风暴》第2章 必须知道的JavaScript知识
第2章 必须知道的JavaScript知识 JavaScript是jQuery应用的基础,掌握JavaScript这门语言是使用jQuery的基础条件.本章不会全面细致的讲解JavaScript的全部 ...
- Highcharts属性详解
Highcharts的基本属性和方法详解 Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学 ...
- http://www.cnblogs.com/AloneSword/p/3370462.html
http://www.cnblogs.com/AloneSword/p/3370462.html
- JVM垃圾回收机制总结(7) :调优方法
JVM调优工具 Jconsole,jProfile,VisualVM Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用.对垃圾回收算法有很详细的跟踪.详细说明参考这里 ...
- Oracle Demo ->> CREATE TABLE
Demo One CREATE TABLE employees_demo ( employee_id ) , first_name ) , last_name ) CONSTRAINT emp_las ...