ZOJ1005 Jugs
题意:有两个容量互质的容器,需要用这两个容器量出目标重量的水,找到其中一组解。
bfs,使得搜索得到的解是步数最少的,遍历前驱法输出路径~
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+;
struct node {
int a,b;
int pre;
int flag;
}Node[maxn];
int last;
int p;
int ca,cb,n;
char s[][] = {"fill A","fill B","empty A","empty B","pour A B","pour B A"};
unordered_map<int,int> pos;
void dfs (int x) {
if (Node[x].pre==-) return;
dfs (Node[x].pre);
printf ("%s\n",s[Node[x].flag]);
}
void bfs (int a,int b) {
if (p>last) return;
if (a==n||b==n) return;
if (pos[a]!=b+) {
pos[a]=b+;
if (a<ca) {
Node[++last].a=ca;
Node[last].b=b;
Node[last].flag=;
Node[last].pre=p;
}
if (b<cb) {
Node[++last].a=a;
Node[last].b=cb;
Node[last].flag=;
Node[last].pre=p;
}
if (a!=) {
Node[++last].a=a;
Node[last].b=b;
Node[last].flag=;
Node[last].pre=p;
}
if (b!=) {
Node[++last].a=a;
Node[last].b=;
Node[last].flag=;
Node[last].pre=p;
}
if (a!=&&b<cb) {
Node[++last].a=max(,a+b-cb);
Node[last].b=a+b-Node[last].a;
Node[last].flag=;
Node[last].pre=p;
}
if (b!=&&a<ca) {
Node[++last].b=max(,a+b-ca);
Node[last].a=a+b-Node[last].b;
Node[last].flag=;
Node[last].pre=p;
}
}
p++;
bfs(Node[p].a,Node[p].b);
}
int main () {
Node[].pre=-;
while (~scanf("%d %d %d",&ca,&cb,&n)) {
p=;
last=;
pos.clear();
bfs(,);
dfs(p);
printf ("success\n");
}
return ;
}
ZOJ1005 Jugs的更多相关文章
- poj1066 Jugs
poj1066 Jugs http://poj.org/problem?id=1606 解题思路:本题可以用数学方法解得,最易理解,常规的解法是搜索.直接用接近模拟的广度优先搜索即可过. 给两个容器, ...
- ZOJ 1005:Jugs(思维)
Jugs Time Limit: 2 Seconds Memory Limit: 65536 KB Special Judge In the movie "Die Har ...
- 【Acm】算法之美—Jugs
题目概述:Jugs In the movie "Die Hard 3", Bruce Willis and Samuel L. Jackson were confronted wi ...
- Jugs(回溯法)
ZOJ Problem Set - 1005 Jugs Time Limit: 2 Seconds Memory Limit: 65536 KB Special Judge In ...
- 『ACM C++』HDU杭电OJ | 1415 - Jugs (灌水定理引申)
今天总算开学了,当了班长就是麻烦,明明自己没买书却要带着一波人去领书,那能怎么办呢,只能说我善人心肠哈哈哈,不过我脑子里突然浮起一个念头,大二还要不要继续当这个班委呢,既然已经体验过就可以适当放下了吧 ...
- 九度OJ 1147:Jugs(罐子) (模拟、游戏)
时间限制:1 秒 内存限制:32 兆 特殊判题:是 提交:243 解决:200 题目描述: In the movie "Die Hard 3", Bruce Willis and ...
- UVA571 - Jugs(数论)
UVA571 - Jugs(数论) 题目链接 题目大意:给你A和B的水杯.给你三种操作:fill X:把X杯里面加满水.empty X:把X杯中的水清空.pour X Y 把X的水倒入Y中直到一方满或 ...
- POJ 1606 Jugs
Jugs Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4280 Accepted: 2533 Special Ju ...
- ZOJ 1005 Jugs(BFS)
Jugs In the movie "Die Hard 3", Bruce Willis and Samuel L. Jackson were confronted with th ...
随机推荐
- S3C2440之存储控制器学习记录
/==========翻译S3C2440存储控制器部分================/ 5 存储控制器 概述 S3C2440内存控制器为外部存储访问提供内存控制信号. S3C2440A有如下特征: ...
- Python(三):环境及其配置
一,PYTHONPATH 默认的Python模块搜索路径,可以将路径指向anaconda3,需要开发者自己设置 二,PYTHONHASHSEED 如果该环境变量被设定为 random ,相当于 -R ...
- sql避免科学计数法并保留两位小数
SELECT trim(to_char(), ), ,), '9999,999,990.00')) AS CAvgPrice FROM POSITION a 结果: 以trim(to_char(ROU ...
- 解决mailx发邮件报错:esmtp-server: 504 5.7.4 Unrecognized authentication type [HK2PR02CA0167.apcprd02.prod.outlook.com] "/root/dead.letter" 11/302 . . . message not sent.
报错信息: esmtp-server: 504 5.7.4 Unrecognized authentication type [HK2PR02CA0167.apcprd02.prod.outlook. ...
- OSI七层协议详解
一.简介 开放系统互连参考模型 (Open System Interconnect 简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式 ...
- ES6常用语法,面试应急专用!
常用的ES6语法 注:该文章为转载,原地址为https://www.jianshu.com/p/fb019d7e8b15 什么是ES6? ECMAScript 6(以下简称ES6)是JavaScr ...
- 百炼OJ - 1005 - I Think I Need a Houseboat
题目链接:http://bailian.openjudge.cn/practice/1005/ 思路 一个半圆面积每年增长50,已知一个点坐标,求第几年点在半圆内. #include <stdi ...
- Mysql sql语句技巧与优化
一.常见sql技巧 1.正则表达式的使用 2.巧用RAND()提取随机行 mysql数据库中有一个随机函数rand()是获取一个0-1之间的数,利用这个函数和order by一起能够吧数据随机排序, ...
- 解决wps for linux缺失windows字体
操作步骤 1.下载缺失字体 链接: https://pan.baidu.com/s/1ZUbtQ96b8RVbH0LrXb_GlQ 密码: nsr4 2.解压字体 unzip wps-font-sy ...
- layui+ajax+select
1.看效果 2.前端代码 <div class="layui-form-item"> <label class="layui-form-label&qu ...