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

 #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. Session、Cookie及cache的区别

    Session 是单用户的会话状态.当用户访问网站时,产生一个 sessionid.并存在于 cookies中.每次向服务器请求时,发送这个 cookies,再从服务器中检索是否有这个 session ...

  2. SSH开发实践part4:Spring整合Struts

    1 好了,前面spring与hibernate的整合开发我们基本上讲完了,现在要开始服务层的开发,也就是处理事务的action,在这里我们需要引入spring与struts的整合.也就是将action ...

  3. shape和selector的结合使用

    shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector.可以这样说,shape和 ...

  4. list, set操作

    def union_list(l1, l2): result = [] if not l1: result.extend(l2) return result if not l2: result.ext ...

  5. ios开发--tcp/ip

    简介 该篇文章主要回顾--TCP/IP协议族中的TCP/UDP.HTTP:还有Socket.(--该文很干,酝酿了许久!你能耐心看完吗?) 我在这个文章中,列举了常见的TCP/IP族中的协议,今天主角 ...

  6. Item2 + zsh

    转自 http://11ten.gitcafe.io/book-a/iTerm2/index.html iTerm2的主要特点: 开源免费. 兼容性比默认Terminal更好.对于经常要远程使用的情况 ...

  7. 关于python中模块的import路径

    前两天被一个同事问了一个python的问题: 为什么一个目录里的python文件引用不要另一个兄弟目录的python文件,但是这两个目录的父母录运行时是可以引用到了.当时感觉一直是模块和包的机制问题, ...

  8. ES6入门之Symbol

    ES5对象属性名都是字符串容易造成属性名的冲突. eg:var a = { name: 'lucy'}; a.name = 'lili';这样就会重写属性 ES6引入了一种新的原始数据类型Symbol ...

  9. MySQL —— 程序连接时的驱动名称和URL

    CONNECTION_DRIVER :  com.mysql.jdbc.Driver  CONNECTION_URL :    jdbc:mysql://localhost/DB_NAME 

  10. 每天一个小算法(Shell sort5)

    希尔排序的关键在于步长的选取. 希尔排序的复杂度比较复杂,主要跟步长的选择有关,大概是 O(n logn^2),一般认为就是介于 O(n^2) 和 O(n logn) 之间.最好步长比较复杂,一般第一 ...