USACO 1.4 Mother's Milk
Mother's Milk
Farmer John has three milking buckets of capacity A, B, and C liters. Each of the numbers A, B, and C is an integer from 1 through 20, inclusive. Initially, buckets A and B are empty while bucket C is full of milk. Sometimes, FJ pours milk from one bucket to another until the second bucket is filled or the first bucket is empty. Once begun, a pour must be completed, of course. Being thrifty, no milk may be tossed out.
Write a program to help FJ determine what amounts of milk he can leave in bucket C when he begins with three buckets as above, pours milk among the buckets for a while, and then notes that bucket A is empty.
PROGRAM NAME: milk3
INPUT FORMAT
A single line with the three integers A, B, and C.
SAMPLE INPUT (file milk3.in)
- 8 9 10
OUTPUT FORMAT
A single line with a sorted list of all the possible amounts of milk that can be in bucket C when bucket A is empty.
SAMPLE OUTPUT (file milk3.out)
- 1 2 8 9 10
SAMPLE INPUT (file milk3.in)
- 2 5 10
SAMPLE OUTPUT (file milk3.out)
- 5 6 7 8 9 10
- 题目大意:倒牛奶。。。。你有三个筒子ABC会告诉你容积,开始的时候AB都是空的,C是满的,问你在不把牛奶倒出三个筒子之外的情况下,在A桶是空的情况下,C桶有多少奶,顺序输出所有可能性。
思路:没什么说的了,BFS。代码写在下面
- /*
- ID:fffgrdcc1
- PROB:milk3
- LANG:C++
- */
- #include<cstdio>
- #include<iostream>
- #include<algorithm>
- using namespace std;
- bool bo[][][]={};
- struct str
- {
- int a,b,c;
- }e[];
- int cnt=;
- int q[],tail,head;
- int a,b,c,A,B,C;
- int main()
- {
- freopen("milk3.in","r",stdin);
- freopen("milk3.out","w",stdout);
- scanf("%d%d%d",&A,&B,&C);
- head=-;tail=;e[].a=e[].b=;e[].c=C;q[]=;bo[][][C]=;
- while(head<tail)
- {
- head++;
- int temp;
- a=e[head].a,b=e[head].b,c=e[head].c;
- temp=min(a,C-c);//a2c
- a-=temp;c+=temp;
- if(!bo[a][b][c])
- {
- bo[a][b][c]=;
- q[++tail]=cnt;
- e[++cnt].a=a;
- e[cnt].b=b;
- e[cnt].c=c;
- }
- a+=temp;c-=temp;
- temp=min(A-a,c);//c2a
- a+=temp;c-=temp;
- if(!bo[a][b][c])
- {
- bo[a][b][c]=;
- q[++tail]=cnt;
- e[++cnt].a=a;
- e[cnt].b=b;
- e[cnt].c=c;
- }
- a-=temp;c+=temp;
- temp=min(a,B-b);//a2b
- a-=temp;b+=temp;
- if(!bo[a][b][c])
- {
- bo[a][b][c]=;
- q[++tail]=cnt;
- e[++cnt].a=a;
- e[cnt].b=b;
- e[cnt].c=c;
- }
- a+=temp;b-=temp;
- temp=min(A-a,b);//b2a
- a+=temp;b-=temp;
- if(!bo[a][b][c])
- {
- bo[a][b][c]=;
- q[++tail]=cnt;
- e[++cnt].a=a;
- e[cnt].b=b;
- e[cnt].c=c;
- }
- a-=temp;b+=temp;
- temp=min(b,C-c);//b2c
- b-=temp;c+=temp;
- if(!bo[a][b][c])
- {
- bo[a][b][c]=;
- q[++tail]=cnt;
- e[++cnt].a=a;
- e[cnt].b=b;
- e[cnt].c=c;
- }
- b+=temp;c-=temp;
- temp=min(c,B-b);//c2b
- c-=temp;b+=temp;
- if(!bo[a][b][c])
- {
- bo[a][b][c]=;
- q[++tail]=cnt;
- e[++cnt].a=a;
- e[cnt].b=b;
- e[cnt].c=c;
- }
- b-=temp;c+=temp;
- }
- int firflag=;
- for(int i=;i<=C;i++)
- {
- b=C-i;
- if(bo[][b][i])
- if(firflag)
- printf("%d",i),firflag=;
- else printf(" %d",i);
- }
- printf("\n");
- return ;
- }
对了,输出格式很重要,提交前别忘记检查,血与泪的教训
USACO 1.4 Mother's Milk的更多相关文章
- USACO Section1.4 Mother's Milk 解题报告
milk3解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...
- USACO training course Mother's Milk /// DFS(有点意思) oj10120
题目大意: 输入 A B C 为三个容器的容量 一开始A B是空的 C是满的 每一次倾倒只能在 盛的容器满 或 倒的容器空 时才停止 输出当A容器空时 C容器内剩余量的所有可能值 Sample Inp ...
- 洛谷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.4】Mother's Milk
/* TASK: milk3 LANG: C++ SOLVE: 倒水,dfs,枚举每一种倒法,ca[i][j]记录a和c桶的状态,因为总体积不变,故b的状态不需要记录. */ #include< ...
- USACO Section 1.4 Mother's Milk 解题报告
题目 题目描述 有三个牛奶桶,三个桶的容积分别是A,B,C,最小为1,最大为20.刚开始只有第三个桶里面装满了牛奶,其余两个桶都是空的.我们现在可以将第三个桶中的牛奶往其他两个桶里面倒一些牛奶,然后还 ...
- Section 1.4 Mother's Milk
又是一道怨念已久的题目0 0之前深搜写过广搜写过,怎么就是卡死,我还以为FP坏了重新装了一遍.今天偶尔翻起来,发现广搜忘记inc(head)了…简直哭瞎… 简单的广搜,分类比较多,不过不太要动脑子.至 ...
- USACO Section 1.3 Mixing Milk 解题报告
题目 题目描述 Merry Milk Makers 公司的业务是销售牛奶.它从农夫那里收购N单位的牛奶,然后销售出去.现在有M个农夫,每个农夫都存有一定量的牛奶,而且每个农夫都会有自己的定价.假设所有 ...
- luogu P1215 [USACO1.4]母亲的牛奶 Mother's Milk
题目描述 农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满牛奶的.有时,农民把牛奶从一个桶倒到另一个桶中,直到被灌桶装满或原桶空了 ...
随机推荐
- DDL:对表___table___的相关操作
1) 增加列 语法: alter table 表名 add 列名 类型(长度) 约束; 2) 修改现有列类型.长度和约束 语法:alter table 表名 modify 列名 类型(长度) 约束; ...
- Datatable筛选数据
DataRow[] drArr = dt.Select("C1=’abc’");//查询 还可以这样操作: DataRow[] drArr = dt.Select("C1 ...
- 第5章分布式系统模式 Data Transfer Object(数据传输对象)
正在设计一个分布式应用程序,为了满足单个客户端请求,您发现自己对一个远程接口发出了多个调用,而这些调用所增加的响应时间超出了可接受的程度. 影响因素 在与远程对象通信时,请考虑下列需要权衡的因素: 远 ...
- hdu1829 A Bug's Life 基础种类并查集
题目的大意可以理解为:A爱B,B爱C ……给出一系列爱恋的关系,推断有没有同性恋. 思路是把相同性别的归为一个集合(等价类),异性的异性为同性. #include<iostream> #i ...
- NOSQL:redis mongodb
redis 1 概念及其基本操作:http://blog.nosqlfan.com/html/3139.html 2 安装配置及其操作:http://blog.fens.me/linux-redis- ...
- Caffe: Caffe的Python接口
官方参考:http://caffe.berkeleyvision.org/installation.html 官方介绍是这样的: Python The main requirements are nu ...
- YoC云上芯片家族迎来新成员
Espressif 乐鑫信息科技(以下简称乐鑫科技)近日在上海召开发布会,发布其旗下最新的旗舰同时也是第二代Yun on Chip(简称YoC)云上芯片ESP32.YoC云上芯片是由YunOS牵头,联 ...
- JS for循环的应用: 打印三角形
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Git 常用命令速查(转载)
git branch 查看本地所有分支git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支git branch -r 查看远程所有分支git co ...
- elasticsearch的核心概念
1.elasticsearch的核心概念 (1)Near Realtime(NRT):近实时,两个意思,从写入数据到数据可以被搜索到有一个小延迟(大概1秒):基于es执行搜索和分析可以达到秒级 (2) ...