题目链接:很可乐

解析:一个瓶子,容量为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. hdu 4545 贪心 *

    题意:小明和他的好朋友小西在玩一个新的游戏,由小西给出一个由小写字母构成的字符串,小明给出另一个比小西更长的字符串,也由小写字母组成,如果能通过魔法转 换使小明的串和小西的变成同一个,那么他们两个人都 ...

  2. mac下递归创建ctags报错: "illegal option -- R"

    在mac系统下不论是使用vim还是sublime text2的ctags插件都会碰到“illegal option -- R”这个错误,原因是mac使用的是自己的ctags,而我们通常在linux或w ...

  3. python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推荐

    在了解python中的tkinter模块的时候,你需要了解一些tkinter的相关知识 下面是python的API文档中的一个简单例子: import tkinter as tk class Appl ...

  4. Codeforces Round #354 (Div. 2) C. Vasya and String 二分

    C. Vasya and String 题目连接: http://www.codeforces.com/contest/676/problem/C Description High school st ...

  5. ROS知识(9)----安装Turtlebot2和远程控制Turtlebot2

    安装turtlebot2,场景为:turtlebot2上搭载着一台电脑主机A,该电脑作为主机Master,有自带的电源和3D传感器,roscore在该台机器上启动.pc电脑远程连接A,和A通讯,pc不 ...

  6. SPOJ 1811. Longest Common Substring (LCS,两个字符串的最长公共子串, 后缀自动机SAM)

    1811. Longest Common Substring Problem code: LCS A string is finite sequence of characters over a no ...

  7. 邮件基本常识普及(to/cc/bcc)

    http://blog.sina.com.cn/s/blog_5572b4b5010009ul.html 前两天,某个同事发的一封邮件着实把我给郁闷了,他发的是图片形式的笑话,内容稍稍有点不太健康,这 ...

  8. SpringBoot集成RabbitMQ并实现消息确认机制

    原文:https://blog.csdn.net/ctwy291314/article/details/80534604 RabbitMQ安装请参照RabbitMQ应用 不啰嗦直接上代码 目录结构如下 ...

  9. 【maven】排除maven中jar包依赖的解决过程 例子:spring cloud启动zipkin,报错maven依赖jar包冲突 Class path contains multiple SLF4J bindings.

    一直对于maven中解决jar包依赖问题的解决方法纠结不清: 下面这个例子可以说明一个很简单的解决方法: 项目启动报错: Connected to the target VM, address: '1 ...

  10. VS2010属性

    基于virtual studio 所有工程属性和  工程属性 这是VS2010的改变,不能够在“工具-选项”中看到“VC++目录”了. 但是呢,我们可以在另外一个地方找到它,请看下边的对比照片. VS ...