A - Jugs ZOJ - 1005 (模拟)
题目链接:https://cn.vjudge.net/contest/281037#problem/A
题目大意:给你a,b,n。a代表第一个杯子的容量,b代表第二个杯子的容量,然后一共有6种操作。让你用尽可能少的步骤将第二个杯子的当前的水的体积转换成n。
具体思路:就是队列模拟啊,,,,打比赛的时候脑子瓦特了,没读完题目就开始读了,,,这个毛病确实得改了,,
AC代码:
#include<iostream>
#include<stack>
#include<iomanip>
#include<cmath>
#include<stdio.h>
#include<cstring>
#include<algorithm>
#include<queue>
#include<vector>
using namespace std;
# define ll long long
const int maxn = 2e6+;
int head[maxn];
struct node
{
int op;
int a;
int b;
} q[maxn];
int ans[maxn],flag=;
int vis[+][+];
void print(int t)
{
if(t>)
{
print(head[t]);
ans[++flag]=q[t].op;
}
}
void cal(int t1,int t2,int g)
{
head[]=-;
int l=,r=,tt;
int num=;
q[].a=,q[].b=,q[].op=;
vis[][]=;
while(l<=r)
{
int tmp=l;
vis[q[tmp].a][q[tmp].b]=;
l++;
if(vis[t1][q[tmp].b]==){
head[++r]=tmp;
q[r].a=t1;
q[r].b=q[tmp].b;
q[r].op=;
if(q[r].b==g)
{
print(r);
return ;
}
}
if(vis[q[tmp].a][t2]==)
{
head[++r]
=tmp;
q[r].a=q[tmp].a;
q[r].b=t2;
q[r].op=;
if(q[r].b==g)
{
print(r);
return ;
}
}
if(vis[][q[tmp].b]==)
{
head[++r]
=tmp;
q[r].a=;
q[r].b=q[tmp].b;
q[r].op=;
if(q[r].b==g)
{
print(r);
return ;
}
}
if(vis[q[tmp].a][]==)
{
head[++r]
=tmp;
q[r].a=q[tmp].a;
q[r].b=;
q[r].op=;
if(q[r].b==g)
{
print(r);
return ;
}
}
int s1=q[tmp].a-min(q[tmp].a,t2-q[tmp].b);
int s2=q[tmp].b+q[tmp].a-s1;
if(vis[s1][s2]==)
{
head[++r]
=tmp;
q[r].a=s1;
q[r].b=s2;
q[r].op=;
if(q[r].b==g)
{
print(r);
return ;
}
}
s1=q[tmp].b-min(q[tmp].b,t1-q[tmp].a);
s2=q[tmp].a+q[tmp].b-s1;
if(vis[s1][s2]==)
{
head[++r]
=tmp;
tt=q[tmp].b;
q[r].b=s1;
q[r].a=s2;
q[r].op=;
if(q[r].b==g)
{
print(r);
return ;
}
}
}
}
int main()
{
int t1,t2,n;
while(~scanf("%d %d %d",&t1,&t2,&n))
{
memset(vis,,sizeof(vis));
flag=;
cal(t1,t2,n);
for(int i=; i<=flag; i++)
{
if(ans[i]==)
{
printf("fill A\n");
}
else if(ans[i]==)
{
printf("fill B\n");
}
else if(ans[i]==)
{
printf("empty A\n");
}
else if(ans[i]==)
{
printf("empty B\n");
}
else if(ans[i]==)
{
printf("pour A B\n");
}
else if(ans[i]==)
{
printf("pour B A\n");
}
}
printf("success\n");
}
// }
return ;
}
A - Jugs ZOJ - 1005 (模拟)的更多相关文章
- ZOJ 1005 Jugs(BFS)
Jugs In the movie "Die Hard 3", Bruce Willis and Samuel L. Jackson were confronted with th ...
- ZOJ 1005:Jugs(思维)
Jugs Time Limit: 2 Seconds Memory Limit: 65536 KB Special Judge In the movie "Die Har ...
- ZOJ 1005 Jugs
原题链接 题目大意:有一大一小两个杯子,相互倒水,直到其中一个杯子里剩下特定体积的水.描述这个过程. 解法:因为两个杯子的容积互质,所以只要用小杯子不断往大杯子倒水,大杯子灌满后就清空,大杯子里迟早会 ...
- [ZOJ 1005] Jugs (dfs倒水问题)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5 题目大意:给你6种操作,3个数a,b,n,代表我有两个杯子,第一个杯 ...
- zoj 3627#模拟#枚举
Treasure Hunt II Time Limit: 2 Seconds Memory Limit: 65536 KB ...
- ZOJ 3829 模拟贪心
2014牡丹江现场赛水题 给出波兰式,推断其是否合法.假设不合法有两种操作: 1:任何位置加一个数字或者操作符 2:随意两个位置的元素对调 贪心模拟就可以 先推断数字数是否大于操作符数,若不大于 an ...
- ZOJ 3736 模拟魔方
题意: 2*2*2的魔方,给你一个初始状态,和一个限定步数,问你在这么多步数条件下最多能有多少面拼好,(不是累加关系,是某一个状态的最多,最多是6); 思路: 最多是7步,所以直 ...
- ZOJ 3492 模拟循环链表线性查找
WA了好几次最后找到错因是因为数组开小了! = = string whose length never exceeds 20 所以至少要开到21 = = ,我却一直开20 ╮(╯▽╰)╭ AC代码: ...
- AC题目简解-数据结构
A - Japan POJ 3067 要两条路有交叉,(x1,y1)(x2,y2)那么需要满足:(x1-x2)*(y1-y2)<0判断出这是求逆序的问题 树状数组求逆序,先通过自定义的比较器实 ...
随机推荐
- 《Linux内核设计与实现》第五章读书笔记
第五章 系统调用 5.1与内核通信 1. 系统调用 让应用程序受限的访问硬件设备 提供创建新进程并与已有进程通信的机制 提供申请操作系统其他资源能力是用户空间进程和硬件设备之间的中间层 2. 系统调 ...
- 软件工程团队项目第一次Sprint评审
第一组:9-652 作品:炸弹人 评价:已经完成了界面的设计和基本功能,游戏已初具雏形.这款游戏可玩性很强,是个很不错的项目.但是对游戏并没有进行深入开发,不能持续的吸引玩家的兴趣,容易引起玩家的厌倦 ...
- [2017BUAA软工]个人阅读作业+总结
阅读作业 没有银弹 No Silver Bullet - Essence and Accidents of Software Engineering - Brooks 在这篇论文中,作者阐述了软件的四 ...
- Beta阶段敏捷冲刺①
1.提供当天站立式会议照片一张. 每个人的工作 (有work item 的ID),并将其记录在码云项目管理中: 1.1昨天已完成的工作. 姓名 昨天已完成的工作 徐璐琳 熟悉"慧记" ...
- Docker(九)-Docker创建Selenium容器
SeleniumHQ官方项目:https://github.com/seleniumHQ/docker-selenium 项目目前快速迭代中. Selenium 这里主要针对的是 Selenium G ...
- [转帖]Linux后端执行命令的方法
Linux 后台执行命令的方法 http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=4241330&fromuid=212883 ...
- vue 请求后台数据 (copy)
https://www.cnblogs.com/calledspeed001/p/7094494.html var that=this get请求 that.$http.get("1.txt ...
- delphi 如何让ScrollBox的内容与滚动条一起实时滚动
delphi 如何让ScrollBox的内容与滚动条一起实时滚动 拖动滚动条后只有释放鼠标键,ScrollBox的内容才会滚动到实际位置,不爽.请问高人,怎样才能使拖动ScrollBox的滚动条的同时 ...
- SVN Update Error: Please execute the 'Cleanup' command
尝试用下面两种方法 svn clean up 中有一个选项break lock勾选上 把对应的文件来里的.svn里面的lock文件删除. svn local delete, incoming dele ...
- OI回忆录第一章 逐梦之始
2013年春,初中零年级.GXZ来到吉大高中机房,参加一位老师曾在班级宣传的"计算机培训".同行的有这位老师,以及近80名同学.和同学们一样,GXZ也是为了在机房玩游戏而参加所谓的 ...