母亲的牛奶(milk)

题目描述

农民约翰有三个容量分别是A、B、C升的桶,A、B、C分别是三个从1到20的整数,最初,A和B桶都是空的,而C桶是装满牛奶的。有时,约翰把牛奶从一个桶倒到另一个桶中,直到被灌桶装满或原桶空了。当然每一次灌注都是完全的,由于节约,牛奶不会丢失。写一个程序去帮助约翰找出当A桶是空的时候,C桶中牛奶所剩量的所有可能性。

输入

单独的1行,包括三个整数A,B和C。

输出

只有1行,列出当A桶是空的时候,C桶牛奶所剩量的所有可能性。

样例输入

8 9 10

样例输出

1 2 8 9 10

分析:考虑所有情况即可,暴力转移;
代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <climits>
#include <cstring>
#include <string>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <vector>
#include <list>
#include <ext/rope>
#define rep(i,m,n) for(i=m;i<=n;i++)
#define rsp(it,s) for(set<int>::iterator it=s.begin();it!=s.end();it++)
#define vi vector<int>
#define pii pair<int,int>
#define mod 1000000007
#define inf 0x3f3f3f3f
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define ll long long
#define pi acos(-1.0)
const int maxn=1e3+;
const int dis[][]={{,},{-,},{,-},{,}};
using namespace std;
using namespace __gnu_cxx;
ll gcd(ll p,ll q){return q==?p:gcd(q,p%q);}
ll qpow(ll p,ll q){ll f=;while(q){if(q&)f=f*p;p=p*p;q>>=;}return f;}
int n,m,k;
set<int>ans;
struct node
{
int x,y,z;
bool operator<(const node&r)const
{
if(x==r.x&&y==r.y)return z<r.z;
else if(x==r.x)return y<r.y;
else return x<r.x;
} };
map<node,int>p;
void dfs(node u)
{
if(p[u]==)return;
p[u]=;
if(u.x==)ans.insert(u.z);
if(u.x<n)
{
if(u.y)
{
node v=u;
v.x+=min(n-u.x,u.y);
v.y-=min(n-u.x,u.y);
dfs(v);
}
if(u.z)
{
node v=u;
v.x+=min(n-u.x,u.z);
v.z-=min(n-u.x,u.z);
dfs(v);
}
}
if(u.y<m)
{
if(u.x)
{
node v=u;
v.y+=min(m-u.y,u.x);
v.x-=min(m-u.y,u.x);
dfs(v);
}
if(u.z)
{
node v=u;
v.y+=min(m-u.y,u.z);
v.z-=min(m-u.y,u.z);
dfs(v);
}
}
if(u.z<k)
{
if(u.x)
{
node v=u;
v.z+=min(k-u.z,u.x);
v.x-=min(k-u.z,u.x);
dfs(v);
}
if(u.y)
{
node v=u;
v.z+=min(k-u.z,u.y);
v.y-=min(k-u.z,u.y);
dfs(v);
}
}
}
int main()
{
int i,j,t;
scanf("%d%d%d",&n,&m,&k);
node q;
q.x=,q.y=,q.z=k;
dfs(q);
printf("%d",*ans.begin());
for(set<int>::iterator it=ans.begin();it!=ans.end();it++)
{
if(it==ans.begin())continue;
else printf(" %d",*it);
}
printf("\n");
//system ("pause");
return ;
}
 

母亲的牛奶(milk)的更多相关文章

  1. 母亲的牛奶(milk) (BFS)

    问题 A: 母亲的牛奶(milk) 时间限制: 1 Sec  内存限制: 64 MB提交: 14  解决: 8[提交][状态][讨论版] 题目描述 农民约翰有三个容量分别是A.B.C升的桶,A.B.C ...

  2. 洛谷P1215 [USACO1.4]母亲的牛奶 Mother's Milk

    P1215 [USACO1.4]母亲的牛奶 Mother's Milk 217通过 348提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交  讨论  题解 最新讨论 暂时没有讨论 ...

  3. P1215 [USACO1.4]母亲的牛奶 Mother's Milk

    P1215 [USACO1.4]母亲的牛奶 Mother's Milk 题目描述 农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满 ...

  4. 随手练——USACO 1.44 母亲的牛奶

    P1215 [USACO1.4]母亲的牛奶 Mother's Milk 洛谷 P1215:https://www.luogu.org/problemnew/show/P1215 解题思想:DFS 大一 ...

  5. 洛谷 P2744 [USACO5.3]量取牛奶Milk Measuring

    P2744 [USACO5.3]量取牛奶Milk Measuring 题目描述 农夫约翰要量取 Q(1 <= Q <= 20,000)夸脱(夸脱,quarts,容积单位——译者注) 他的最 ...

  6. luogu P1215 [USACO1.4]母亲的牛奶 Mother's Milk

    题目描述 农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满牛奶的.有时,农民把牛奶从一个桶倒到另一个桶中,直到被灌桶装满或原桶空了 ...

  7. 洛谷 P1215 [USACO1.4]母亲的牛奶 Mother's Milk

    题目描述 农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满牛奶的.有时,农民把牛奶从一个桶倒到另一个桶中,直到被灌桶装满或原桶空了 ...

  8. 洛谷 P1215 【[USACO1.4]母亲的牛奶 Mother's Milk】

    这道题\(DFS\)就好了,六种情况,\(ab,ac,ba,bc,ca,cb\),我们直接枚举就可.什么?这样不会结束?用一个\(vis\)数组判断走过没有就可以了.最后排序输出即可. \(code: ...

  9. 洛谷P2744 [USACO5.3]量取牛奶Milk Measuring

    题目描述 农夫约翰要量取 Q(1 <= Q <= 20,000)夸脱(夸脱,quarts,容积单位--译者注) 他的最好的牛奶,并把它装入一个大瓶子中卖出.消费者要多少,他就给多少,从不有 ...

随机推荐

  1. Centos sudo添加用户

    $ su - # vi /etc/sudoers 在root ALL=(ALL) ALL下 添加 username ALL=(ALL) ALL 输入wq!强制保存.

  2. json格式数据,将数据库中查询的结果转换为json, 然后调用接口的方式返回json(方式一)

    调用接口,无非也就是打开链接 读取流 将结果以流的形式输出 将查询结果以json返回,无非就是将查询到的结果转换成jsonObject ================================ ...

  3. hdu_2089_不要62(数位DP)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意:中文,不解释 题解:dp[i][j]表示当前第i位的前一个数为j,然后记忆化dfs,注意的 ...

  4. redis第一篇--综述

    1 redis里边有数据库的概念.可分为1-255这些表.在存储或者查找的时候要指明. redis_sentinel 集群里边封装成了namespace这样的概念.与db是不一样的.

  5. marzullo's algorithm

    given several intervals, how to find a interval which is a intersect of the most number of the given ...

  6. 萝卜德森的sublime笔记中文翻译版

    我已经使用subliem编辑器版本2接近2个月了,并且我在其中找到了一堆有用的技巧.我发觉应该写下这些技巧,为那些对此感兴趣的人们.我会尽力的详细描述,那些看起来像魔法一样的东西,因为很多非常“酷”的 ...

  7. linux fork()函数

    C语言编程创建函数fork() 执行解析 | 浏览:1842 | 更新:2013-04-22 15:12 | 标签:c语言 概述 最近在看进程间的通信,看到了fork()函数,虽然以前用过,这次经过思 ...

  8. Hibernate 系列教程4-单向多对一

    项目图片 hibernate.cfg.xml <mapping resource="com/jege/hibernate/one/way/manytoone/User.hbm.xml& ...

  9. HDU 1022 Train Problem I 用栈瞎搞

    题目大意:有n辆火车,按一定的顺序进站(第一个字符串顺序),问是否能按规定的顺序出站(按第二个字符串的顺序出去),如果能输出每辆火车进出站的过程. 题目思路:栈的特点是先进后出,和题意类似,还有有一种 ...

  10. Local declaration of 'XXX' hides instance variable

    今天调试程序遇到这么一个警告! Local declaration of 'XXX' hides instance variable 遇到这种原因,是因为本地变量跟函数参数变量同名.改变其一即可.