题目链接: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 (模拟)的更多相关文章

  1. ZOJ 1005 Jugs(BFS)

    Jugs In the movie "Die Hard 3", Bruce Willis and Samuel L. Jackson were confronted with th ...

  2. ZOJ 1005:Jugs(思维)

    Jugs Time Limit: 2 Seconds      Memory Limit: 65536 KB      Special Judge In the movie "Die Har ...

  3. ZOJ 1005 Jugs

    原题链接 题目大意:有一大一小两个杯子,相互倒水,直到其中一个杯子里剩下特定体积的水.描述这个过程. 解法:因为两个杯子的容积互质,所以只要用小杯子不断往大杯子倒水,大杯子灌满后就清空,大杯子里迟早会 ...

  4. [ZOJ 1005] Jugs (dfs倒水问题)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5 题目大意:给你6种操作,3个数a,b,n,代表我有两个杯子,第一个杯 ...

  5. zoj 3627#模拟#枚举

    Treasure Hunt II Time Limit: 2 Seconds                                     Memory Limit: 65536 KB    ...

  6. ZOJ 3829 模拟贪心

    2014牡丹江现场赛水题 给出波兰式,推断其是否合法.假设不合法有两种操作: 1:任何位置加一个数字或者操作符 2:随意两个位置的元素对调 贪心模拟就可以 先推断数字数是否大于操作符数,若不大于 an ...

  7. ZOJ 3736 模拟魔方

    题意:       2*2*2的魔方,给你一个初始状态,和一个限定步数,问你在这么多步数条件下最多能有多少面拼好,(不是累加关系,是某一个状态的最多,最多是6); 思路:      最多是7步,所以直 ...

  8. ZOJ 3492 模拟循环链表线性查找

    WA了好几次最后找到错因是因为数组开小了! = = string whose length never exceeds 20 所以至少要开到21 = = ,我却一直开20 ╮(╯▽╰)╭ AC代码: ...

  9. AC题目简解-数据结构

    A - Japan  POJ 3067 要两条路有交叉,(x1,y1)(x2,y2)那么需要满足:(x1-x2)*(y1-y2)<0判断出这是求逆序的问题 树状数组求逆序,先通过自定义的比较器实 ...

随机推荐

  1. .net中操作Visual SourceSafe

    最近整理一些资料,发现以前写的一段代码,提供对微软的版本管理软件visual sourcesafe的一些操作.以下简称vss. 想起以前写的时候,因为资料比较匮乏,只能边研究边测试,走了不少弯路. 由 ...

  2. 2017-2018 第一学期201623班《程序设计与数据结构》-第5&6周作业问题总结

    一.作业内容 第5周作业 http://www.cnblogs.com/rocedu/p/7484252.html#WEEK05 第6周作业 http://www.cnblogs.com/rocedu ...

  3. Linux换源

    Linux换源 前言 最近学校的ipv6坏了,导致从deepin本身获取的源速度极慢,笔者实在忍无可忍,随后在同学指导下换了清华大学ipv4的源 步骤 sudo gedit /etc/apt/sour ...

  4. Scapy安装以及简单使用

    Scapy安装以及简单使用 参考文档 scapy官方文档 前言 scapy是一个可以模拟发送报文的python程序,使用了它从此发包不愁. 安装 1.首先得安装Python2.7 ​ 在linux系统 ...

  5. We are a team----sh_6666

    团队宣言:编程,我们是玩命的,玩命,我们是认真的. 团队简介: 团队名称:sh_6666队 团队博客链接:http://www.cnblogs.com/sh-6666/ 人物简介: 剧团导演:吴小勇 ...

  6. div z-index无论设置多高都不起作用

    这种情况发生的条件有三个: 1.父标签position属性为relative: 2.当前标签无position属性(relative,absolute,fixed): 3.当前标签含有浮动(float ...

  7. [From WIKI] IBM Z

    IBM zEnterprise System From Wikipedia, the free encyclopedia     Jump to navigationJump to search Hi ...

  8. 51Nod 1175 区间中第K大的数 (可持久化线段树+离散)

    1175 区间中第K大的数 基准时间限制:1 秒 空间限制:131072 KB 分值: 160 难度:6级算法题   一个长度为N的整数序列,编号0 - N - 1.进行Q次查询,查询编号i至j的所有 ...

  9. MT【185】$\max$的表示

    已知$f(x)=x^2+(a-4)x+1+|x^2-ax+1|$的最小值为$\dfrac{1}{2}$,则$a$=______ 提示:$f(x)=\max\{2(x-1)^2,2(a-2)x\}$,从 ...

  10. BZOJ 3625: [Codeforces Round #250]小朋友和二叉树

    3625: [Codeforces Round #250]小朋友和二叉树 Time Limit: 40 Sec  Memory Limit: 256 MBSubmit: 304  Solved: 13 ...