解题思路:简单的宽搜,见代码:

 #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 非常可乐的更多相关文章

  1. HDU-1495 非常可乐(BFS)

    广搜的灵活应用题: 非常可乐 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  2. HDU1495 非常可乐 —— BFS + 模拟

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1495 非常可乐 Time Limit: 2000/1000 MS (Java/Others)    M ...

  3. HDU-1495 非常可乐 (嵌套结构体-广搜 对比 一般广搜)

    题意 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多.但 ...

  4. HDU1495 非常可乐(BFS/数论)

    大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多.但see ...

  5. HDU小小练

    hdu1253胜利大逃亡(bfs) 题意:就是城堡问题,找出可通行路径即可 思路:三维BFS,设定前后上下左右6个方向搜索,注意开始的时候人站的位置可以是墙. hdu1495非常可乐(bfs) 题意: ...

  6. 非常可乐(杭电hdu1495)bfs

      非常可乐 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  7. 非常可乐 HDU1495

    BFS题 一共有六种状态转移 一一枚举就好 设置一个标记数组. 用二重循环可以很清晰的解决代码长的问题 #include<cstdio> #include<cstring> # ...

  8. 【HDU - 1495】非常可乐

    -->非常可乐  Descriptions: 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一 ...

  9. hdoj 1495 非常可乐【bfs隐式图】

    非常可乐 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

随机推荐

  1. Windows 7 常用快捷键 命令

    Win+E:  打开新的windows资源浏览器 Win+F:搜索文件或文件夹 Win+R:打开运行窗口 Win + D:显示桌面 Win + M:最小化所有窗口 Ctrl+Shift+N: 新建文件 ...

  2. Codeigniter整合Tank Auth权限类库的教程

    Codeigniter整合Tank Auth权限类库的教程一开始找了很多CodeIgniter的类库,觉得都不怎么样,后来干脆自己通过CI的钩子系统写了权限管理.但是还是不怎么满意,后来有人推荐tan ...

  3. Jenkins配置基于角色的项目权限管理--转

    本文将介绍如何配置jenkins,使其可以支持基于角色的项目权限管理. 由于jenkins默认的权限管理体系不支持用户组或角色的配置,因此需要安装第三发插件来支持角色的配置,本文将使用Role Str ...

  4. C连接oracle(PROC*C)

    1. 安装oralce 10g 2.建立数据库和用户 配置VS2005环境  proc需要嵌入式环境 在C/C++常规里面加入 D:\oracle\product\10.2.0\db_1\precom ...

  5. Qt之获取本机网络信息(MAC, IP等等,很全)

    经常使用命令行来查看一些计算机的配置信息. 1.首先按住键盘上的“开始键+R键”,然后在弹出的对话框中输入“CMD”,回车 另外,还可以依次点击 开始>所有程序>附件>命令提示符 2 ...

  6. 让浏览器屏蔽js

    有时候为了测试js是否做到了渐进增强,需要屏蔽下js 做法: Internet选项>>安全>>自定义级别 禁用java小程序脚本和活动脚本 有的浏览器调试器直接就有这个功能

  7. 【重走Android之路】【路线篇(一)】路线图

    总结归纳了J2SE和Android的知识点,自己制订了一套详细的路线图,其中肯定有考虑不全和不合适的地方,欢迎各位大牛批评指正.   详细路线图如下:  

  8. Ubuntu 13.10 安装Qt5

    Qt5在Ubuntu的软件中心是找不到的,只能从Qt的官网下载安装. http://qt-project.org/downloads,选择完整的Linux版本(qt-linux-opensource- ...

  9. c++ 字符串函数用法举例

    1. substr() 2. replace() 例子:split() 字符串切割: substr 函数原型: , size_t n = npos ) const; 解释:抽取字符串中从pos(默认为 ...

  10. [Spring Boot 系列] 集成maven和Spring boot的profile功能

    由于项目的需要, 今天给spirng boot项目添加了profile功能.再网上搜索了一圈,也没有找到满意的参考资料,其实配置并不难,就是没有一个one stop(一站式)讲解的地方,所以有了写这篇 ...