母亲的牛奶(milk)
母亲的牛奶(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)的更多相关文章
- 母亲的牛奶(milk) (BFS)
问题 A: 母亲的牛奶(milk) 时间限制: 1 Sec 内存限制: 64 MB提交: 14 解决: 8[提交][状态][讨论版] 题目描述 农民约翰有三个容量分别是A.B.C升的桶,A.B.C ...
- 洛谷P1215 [USACO1.4]母亲的牛奶 Mother's Milk
P1215 [USACO1.4]母亲的牛奶 Mother's Milk 217通过 348提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交 讨论 题解 最新讨论 暂时没有讨论 ...
- P1215 [USACO1.4]母亲的牛奶 Mother's Milk
P1215 [USACO1.4]母亲的牛奶 Mother's Milk 题目描述 农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满 ...
- 随手练——USACO 1.44 母亲的牛奶
P1215 [USACO1.4]母亲的牛奶 Mother's Milk 洛谷 P1215:https://www.luogu.org/problemnew/show/P1215 解题思想:DFS 大一 ...
- 洛谷 P2744 [USACO5.3]量取牛奶Milk Measuring
P2744 [USACO5.3]量取牛奶Milk Measuring 题目描述 农夫约翰要量取 Q(1 <= Q <= 20,000)夸脱(夸脱,quarts,容积单位——译者注) 他的最 ...
- luogu P1215 [USACO1.4]母亲的牛奶 Mother's Milk
题目描述 农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满牛奶的.有时,农民把牛奶从一个桶倒到另一个桶中,直到被灌桶装满或原桶空了 ...
- 洛谷 P1215 [USACO1.4]母亲的牛奶 Mother's Milk
题目描述 农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满牛奶的.有时,农民把牛奶从一个桶倒到另一个桶中,直到被灌桶装满或原桶空了 ...
- 洛谷 P1215 【[USACO1.4]母亲的牛奶 Mother's Milk】
这道题\(DFS\)就好了,六种情况,\(ab,ac,ba,bc,ca,cb\),我们直接枚举就可.什么?这样不会结束?用一个\(vis\)数组判断走过没有就可以了.最后排序输出即可. \(code: ...
- 洛谷P2744 [USACO5.3]量取牛奶Milk Measuring
题目描述 农夫约翰要量取 Q(1 <= Q <= 20,000)夸脱(夸脱,quarts,容积单位--译者注) 他的最好的牛奶,并把它装入一个大瓶子中卖出.消费者要多少,他就给多少,从不有 ...
随机推荐
- php 项目简单分类
项目分为:客户需求和自行研发. 商城项目:------------------------商城分类:单商家:商家就是网站所有者.如京东.凡客. 多商家:如淘宝 网站所有者不是卖家. ...
- hdu_2608_0 or 1_数论
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2608 反正我是没找出这个规律的,规律参考的别人的! /* 分析:假设数n=2^k*p1^s1*p2^s ...
- %02d
%d表示打印整型的,%2d表示把整型数据打印最低两位,%02d表示把整型数据打印最低两位,如果不足两位,用0补齐所以打印出来就是02了
- SharePoint 2010 Modal Dialog
SharePoint 2010 Modal Dialog Tweet Modal dialog play very important role to improve the user exper ...
- android网络编程之HttpUrlConnection的讲解--实现文件的断点上传
1.网络开发不要忘记在配置文件中添加访问网络的权限 <uses-permission android:name="android.permission.INTERNET"/& ...
- Git撤销暂存区stage中的内容
$ git add readme.txt提交到了stage中. $ git statusOn branch masterChanges to be committed: (use "git ...
- kubernetes 条件需求
1. 你必须拥有一台安装有Docker的机器. 2. 你的内核必须支持 memory and swap accounting .确认你的linux内核开启了如下配置: CONFIG_RESOURCE_ ...
- jni中的参数含义
#include <jni.h> JNIEXPORT jstring JNICALL Java_com_example_hellojni_MainActivity_helloFromC ( ...
- WEBROOT根目录 <%=request.getContextPath()%>
WEBROOT根目录 <%=request.getContextPath()%> == ${pageContext.request.contextPath}
- dfs Codeforces Round #356 (Div. 2) D
http://codeforces.com/contest/680/problem/D 题目大意:给你一个大小为X的空间(X<=m),在该空间内,我们要尽量的放一个体积为a*a*a的立方体,且每 ...