题目链接:很可乐

解析:一个瓶子,容量为s。两个杯子,容量分别为n和m,问最少多少次倾倒才干将一瓶可乐均分为两份。

直接模拟每次的倾倒。然后递归求解。

能够加个预判的条件,要是s是奇数的时候,不管怎样也是分不均的。

AC代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; int s, n, m, ans;
bool vis[101][101][101], tg; //vis中。第一维是瓶子s,第二维是杯子n。第三维是杯子m void dfs(int x, int y, int z, int dep){
if((x == s/2 && y == s/2) || (x == s/2 && z == s/2) || (y == s/2 && z == s/2)){ //均分了
tg = true;
if(ans > dep) ans = dep;
return ;
}
//x->y
if(x > 0 && y < n){
int t = min(x, n-y);
if(!vis[x-t][y+t][z]){
vis[x-t][y+t][z] = true;
dfs(x-t, y+t, z, dep+1);
vis[x-t][y+t][z] = false;
}
}
//x->z
if(x > 0 && z < m){
int t = min(x, m-z);
if(!vis[x-t][y][z+t]){
vis[x-t][y][z+t] = true;
dfs(x-t, y, z+t, dep+1);
vis[x-t][y][z+t] = false;
}
}
//y->x
if(y > 0 && x < s){
int t = min(y, s-x);
if(!vis[x+t][y-t][z]){
vis[x+t][y-t][z] = true;
dfs(x+t, y-t, z, dep+1);
vis[x+t][y-t][z] = false;
}
}
//z->x
if(z > 0 && x < s){
int t = min(z, s-x);
if(!vis[x+t][y][z-t]){
vis[x+t][y][z-t] = true;
dfs(x+t, y, z-t, dep+1);
vis[x+t][y][z-t] = false;
}
}
//y->z
if(y > 0 && z < m){
int t = min(y, m-z);
if(!vis[x][y-t][z+t]){
vis[x][y-t][z+t] = true;
dfs(x, y-t, z+t, dep+1);
vis[x][y-t][z+t] = false;
}
}
//z->y
if(z > 0 && y < n){
int t = min(z, n-y);
if(!vis[x][y+t][z-t]){
vis[x][y+t][z-t] = true;
dfs(x, y+t, z-t, dep+1);
vis[x][y+t][z-t] = false;
}
}
} int main(){
// freopen("in.txt", "r", stdin);
while(scanf("%d%d%d", &s, &n, &m) == 3){
if(s == 0 && n == 0 && m == 0) break;
if(s % 2){ puts("NO"); continue; } //s是奇数
ans = 0x7fffffff;
tg = false;
vis[s][0][0] = true;
dfs(s, 0, 0, 0);
if(tg) printf("%d\n", ans);
else puts("NO");
}
return 0;
}

HDU 1495 很可乐 (DFS)的更多相关文章

  1. HDU 1495 很可乐(BFS 倒水问题)

    题意  将体积为s的可乐  利用容积分别为n和m的两个杯子平均分为两份  至少须要倒多少次可乐 能够把容器s,n,m中装的可乐量看成一种状态 容器都是没有刻度的  所以每次倒可乐要么把自己倒完 要么把 ...

  2. HDU 1401 Solitaire 双向DFS

    HDU 1401 Solitaire 双向DFS 题意 给定一个\(8*8\)的棋盘,棋盘上有4个棋子.每一步操作可以把任意一个棋子移动到它周围四个方向上的空格子上,或者可以跳过它四个方向上的棋子(就 ...

  3. 【BFS】HDU 1495

    直达–> HDU 1495 非常可乐 相似题联动–>POJ 3414 Pots 题意:中文题,不解释. 思路:三个杯子倒来倒去,最后能让其中两个平分即可.可能性六种.判定的时候注意第三个杯 ...

  4. HDOJ(HDU).2660 Accepted Necklace (DFS)

    HDOJ(HDU).2660 Accepted Necklace (DFS) 点我挑战题目 题意分析 给出一些石头,这些石头都有自身的价值和重量.现在要求从这些石头中选K个石头,求出重量不超过W的这些 ...

  5. HDOJ(HDU).1045 Fire Net (DFS)

    HDOJ(HDU).1045 Fire Net [从零开始DFS(7)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架/双重DFS HD ...

  6. HDOJ(HDU).1241 Oil Deposits(DFS)

    HDOJ(HDU).1241 Oil Deposits(DFS) [从零开始DFS(5)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架 ...

  7. HDOJ(HDU).1035 Robot Motion (DFS)

    HDOJ(HDU).1035 Robot Motion [从零开始DFS(4)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架/双重DF ...

  8. HDU 1501 Zipper 【DFS+剪枝】

    HDU 1501 Zipper [DFS+剪枝] Problem Description Given three strings, you are to determine whether the t ...

  9. BFS(倒水问题) HDU 1495 非常可乐

    题目传送门 /* BFS:倒水问题,当C是奇数时无解.一共有六种情况,只要条件符合就入队,我在当该状态vised时写了continue 结果找了半天才发现bug,泪流满面....(网上找份好看的题解都 ...

随机推荐

  1. PHP 二维数组根据某个字段排序 复制代码 array_multisort

    //二维数组,按照里面的age从大到小降序,代码如下 <?php header('Content-Type:text/html;Charset=utf-8'); $arrUsers = arra ...

  2. android 实现 view 滑动

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 1,通过view 的  滑动到 方法 或者 通过什么滑动  方法 实现.  适合 视图 ...

  3. POJ 1469 COURSES 二分图最大匹配 二分图

    http://poj.org/problem?id=1469 这道题我绝壁写过但是以前没有mark过二分图最大匹配的代码mark一下. 匈牙利 O(mn) #include<cstdio> ...

  4. Problem B: 七龙珠II

    Description 小王去找了个算命先生算算这辈子是有钱还是没钱.他在纸上写下“性命”两个字,问哪个字重要. 小王想了想说当然是命比较重要. 他摇摇头:“你,没钱” “为什么?” “有钱,任性.没 ...

  5. 【POJ】1862:Stripies【贪心】【优先队列】

    Stripies Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 20456   Accepted: 9098 Descrip ...

  6. bzoj 3209 数位DP+欧拉定理

    枚举1的个数,统计有那么多1的数的个数 /************************************************************** Problem: 3209 Us ...

  7. bzoj 2460 拟阵+判线性相关

    /************************************************************** Problem: 2460 User: idy002 Language: ...

  8. Educational Codeforces Round 13 C. Joty and Chocolate 水题

    C. Joty and Chocolate 题目连接: http://www.codeforces.com/contest/678/problem/C Description Little Joty ...

  9. hdoj 4272 LianLianKan 数据太水

    LianLianKan Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  10. Vue集成腾讯地图和几何库

    关于Vue中如何引入腾讯地图,百度搜索中的结果已经非常明确: /** * 腾讯地图. * @param key * @returns {Promise<any>} * @construct ...