母亲的牛奶(milk)

时间:2023-01-18 10:46:38

母亲的牛奶(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. 母亲的牛奶&lpar;milk&rpar; &lpar;BFS&rpar;

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

  2. 洛谷P1215 &lbrack;USACO1&period;4&rsqb;母亲的牛奶 Mother&&num;39&semi;s Milk

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

  3. P1215 &lbrack;USACO1&period;4&rsqb;母亲的牛奶 Mother&&num;39&semi;s Milk

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

  4. 随手练——USACO 1&period;44 母亲的牛奶

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

  5. 洛谷 P2744 &lbrack;USACO5&period;3&rsqb;量取牛奶Milk Measuring

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

  6. luogu P1215 &lbrack;USACO1&period;4&rsqb;母亲的牛奶 Mother&&num;39&semi;s Milk

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

  7. 洛谷 P1215 &lbrack;USACO1&period;4&rsqb;母亲的牛奶 Mother&&num;39&semi;s Milk

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

  8. 洛谷 P1215 【&lbrack;USACO1&period;4&rsqb;母亲的牛奶 Mother&&num;39&semi;s Milk】

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

  9. 洛谷P2744 &lbrack;USACO5&period;3&rsqb;量取牛奶Milk Measuring

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

随机推荐

  1. iOS App更改显示的项目名

    添加Key: Bundle display name 后面value直接添加想改变的值

  2. FizzBuzz 问题

    public class FizzBuzz { static int start = 1; static int end = 100; public static void main(String[] ...

  3. 数据结构练习 01-复杂度2&period; Maximum Subsequence Sum &lpar;25&rpar;

    Given a sequence of K integers { N1, N2, ..., NK }. A continuous subsequence is defined to be { Ni, ...

  4. VS2010中水晶报表应用及实例

    原文:VS2010中水晶报表应用及实例 基本分类如下:第一部分:VS2010简介VS2010是微软的提供的一套完整的开发环境,功能也是相当的大微软宣布了下一代开发工具和平台的正式名称,分别称为“Vis ...

  5. 小编辑 Java 中十进制和十六进制的相互转换

    1 2 3 4 5 // 十进制转化为十六进制,结果为C8. Integer.toHexString(200);   // 十六进制转化为十进制,结果140. Integer.parseInt(&qu ...

  6. Asp&period;net MVC-3-执行过程

    本篇主要讲述MVC处理请求时创建Controller和执行Action的完整过程. 创建Controller 先查看MvcHandler中处理请求的方法BeginProcessRequest: pro ...

  7. iframe之间的postMessage传参

    1.传参 function IframeClose() { var obj = {method: "iframeClose"}; window.parent.postMessage ...

  8. interface中定义default方法和static方法

    interface的default方法和static方法 接口中可以定义static方法,可通过接口名称.方法名()调用,实现类不能继承static方法: 接口中可以定义default方法,defau ...

  9. 目标检测的图像特征提取之(一)HOG特征(转)

    看过很多介绍HOG的博文,讲的最清楚的是这位博主:http://blog.csdn.net/zouxy09/article/details/7929348 代码如下: #include <ope ...

  10. C&plus;&plus;中重载决议与可访问性检查的顺序

    http://blog.csdn.net/starlee/article/details/1406781 对于如下的类: class ClxECS{public:    double Test(dou ...