HDU 1495 很可乐 (DFS)
题目链接:很可乐
解析:一个瓶子,容量为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)的更多相关文章
- HDU 1495 很可乐(BFS 倒水问题)
题意 将体积为s的可乐 利用容积分别为n和m的两个杯子平均分为两份 至少须要倒多少次可乐 能够把容器s,n,m中装的可乐量看成一种状态 容器都是没有刻度的 所以每次倒可乐要么把自己倒完 要么把 ...
- HDU 1401 Solitaire 双向DFS
HDU 1401 Solitaire 双向DFS 题意 给定一个\(8*8\)的棋盘,棋盘上有4个棋子.每一步操作可以把任意一个棋子移动到它周围四个方向上的空格子上,或者可以跳过它四个方向上的棋子(就 ...
- 【BFS】HDU 1495
直达–> HDU 1495 非常可乐 相似题联动–>POJ 3414 Pots 题意:中文题,不解释. 思路:三个杯子倒来倒去,最后能让其中两个平分即可.可能性六种.判定的时候注意第三个杯 ...
- HDOJ(HDU).2660 Accepted Necklace (DFS)
HDOJ(HDU).2660 Accepted Necklace (DFS) 点我挑战题目 题意分析 给出一些石头,这些石头都有自身的价值和重量.现在要求从这些石头中选K个石头,求出重量不超过W的这些 ...
- HDOJ(HDU).1045 Fire Net (DFS)
HDOJ(HDU).1045 Fire Net [从零开始DFS(7)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架/双重DFS HD ...
- HDOJ(HDU).1241 Oil Deposits(DFS)
HDOJ(HDU).1241 Oil Deposits(DFS) [从零开始DFS(5)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架 ...
- HDOJ(HDU).1035 Robot Motion (DFS)
HDOJ(HDU).1035 Robot Motion [从零开始DFS(4)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架/双重DF ...
- HDU 1501 Zipper 【DFS+剪枝】
HDU 1501 Zipper [DFS+剪枝] Problem Description Given three strings, you are to determine whether the t ...
- BFS(倒水问题) HDU 1495 非常可乐
题目传送门 /* BFS:倒水问题,当C是奇数时无解.一共有六种情况,只要条件符合就入队,我在当该状态vised时写了continue 结果找了半天才发现bug,泪流满面....(网上找份好看的题解都 ...
随机推荐
- BZOJ 1174 [Balkan2007]Toponyms(Trie)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1174 [题目大意] 选出一些字符串,使得字符串的最长公共前缀*字符串的总个数最大化 [ ...
- [POI2015]Wilcze doły
[POI2015]Wilcze doły 题目大意: 给定一个长度为\(n(n\le2\times10^6)\)的数列\(A(1\le A_i\le10^9)\),可以从中选取不超过\(d\)个连续数 ...
- [COGS2580]偏序 II
[COGS2580]偏序 II 题目大意: \(n(n\le50000)\)个五元组,求五维偏序. 思路: CDQ分治套CDQ分治套CDQ分治套树状数组. 时间复杂度\(\mathcal O(n\lo ...
- Vue的过渡或动画
一.过渡的类名 在进入/离开的过渡中,共有6种class进行切换,分别是v-enter,v-enter-active,v-enter-to,v-leave,v-leave-active,v-leave ...
- Apache之.htaccess备忘录(二)
博主热衷各种互联网技术,常啰嗦,时常伴有强迫症,常更新,觉得文章对你有帮助的可以关注我. 转载请注明"深蓝的镰刀" 书接上回,<Apache之.htaccess备忘录(一)& ...
- Codeforces Round #296 (Div. 1) A. Glass Carving Set的妙用
A. Glass Carving time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- hdoj 1753 大明A+B 高精度/java
大明A+B Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- java 反射机制之 getDeclaredMethod()获取方法,然后invoke执行实例对应的方法
关于反射中getDeclaredMethod().invoke()的学习,来源于项目中的一行代码: SubjectService.class.getDeclaredMethod(autoMatchCo ...
- 技能树升级——Chrome Headless模式 - 全栈客栈 - SegmentFault
技能树升级--Chrome Headless模式 - 全栈客栈 - SegmentFault TNPM
- php 可以动态的new一个变量类名
<?PHPheader("content-type:text/html; charset=utf-8");//echo ucfirst('a b'); class Stude ...