USACO Section1.4 Mother's Milk 解题报告
milk3解题报告 —— icedream61 博客园(转载请注明出处)
------------------------------------------------------------------------------------------------------------------------------------------------
【题目】
有三个桶,容量分别是A、B、C,开始C桶是满的。
你可以不断将某个桶的奶倒到另一个桶里,但只允许全倒过去,或者将后者倒满,前者留下剩余的奶。
请问,当A桶空时,C桶中的奶量可能有哪些值?
【数据范围】
A、B、C均为1到20的整数
【输入格式】
A B C
【输出格式】
c1 c2 c3 .. cn(表示题目所求C桶可能的容量,升序排列)
【输入样例1】
8 9 10
【输出样例1】
1 2 8 9 10
【输入样例2】
2 5 10
【输出样例2】
5 6 7 8 9 10
------------------------------------------------------------------------------------------------------------------------------------------------
【分析】
直接暴力搜索,别想复杂了就好。
三个桶所有的情况最多是20×20×20=8000种,很少的。
设布尔型变量p[a][b][c]表示A桶奶量a、B桶奶量b、C桶奶量c的情况是否可能达到。
开始,令p[0][0][C]=true;
而后,开始搜索,每达到一种新的状态,就从此状态把六种倒法都试过来,搜索状态最多8000种,时间完全够。
最后,看看p[0][b][c]的状态,让b从0取到20,看c都有可能取哪些值,记下来,按顺序输出即可。
------------------------------------------------------------------------------------------------------------------------------------------------
【总结】
USACO评测真严格!行尾空格不忽略。想省点代码的,第一个点就WA了……
第二次AC。
------------------------------------------------------------------------------------------------------------------------------------------------
【代码】
/*
ID: icedrea1
PROB: milk3
LANG: C++
*/ #include <iostream>
#include <fstream>
using namespace std; int A,B,C;
bool p[][][]; void go(int a,int b,int c)
{
//cout<<"go "<<a<<" "<<b<<" "<<c<<endl;
int x,y,z;
// a->b
x=; y=a+b; z=c; if(y>B) { x=y-B; y=B; }
if(!p[x][y][z]) { p[x][y][z]=true; go(x,y,z); }
// a->c
x=; y=b; z=a+c; if(z>C) { x=z-C; z=C; }
if(!p[x][y][z]) { p[x][y][z]=true; go(x,y,z); }
// b->a
x=a+b; y=; z=c; if(x>A) { y=x-A; x=A; }
if(!p[x][y][z]) { p[x][y][z]=true; go(x,y,z); }
// b->c
x=a; y=; z=b+c; if(z>C) { y=z-C; z=C; }
if(!p[x][y][z]) { p[x][y][z]=true; go(x,y,z); }
// c->a
x=a+c; y=b; z=; if(x>A) { z=x-A; x=A; }
if(!p[x][y][z]) { p[x][y][z]=true; go(x,y,z); }
// c->b
x=a; y=b+c; z=; if(y>B) { z=y-B; y=B; }
if(!p[x][y][z]) { p[x][y][z]=true; go(x,y,z); }
} int main()
{
ifstream in("milk3.in");
ofstream out("milk3.out"); in>>A>>B>>C; p[][][C]=true; go(,,C); bool can[]={};
int a=;
for(int b=;b<=B;++b)
for(int c=;c<=C;++c)
if(p[a][b][c]) can[c]=true; int c;
for(c=;c<=C;++c)
if(can[c]) { out<<c; break; }
for(++c;c<=C;++c)
if(can[c]) out<<" "<<c;
out<<endl; in.close();
out.close();
return ;
}
USACO Section1.4 Mother's Milk 解题报告的更多相关文章
- USACO Section1.2 Name That Number 解题报告
namenum解题报告 —— icedream61 博客园(转载请注明出处)-------------------------------------------------------------- ...
- USACO Section1.1 Friday the Thirteenth 解题报告
friday解题报告 —— icedream61 博客园(转载请注明出处) -------------------------------------------------------------- ...
- USACO Section1.3 Ski Course Design 解题报告
skidesign解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------ ...
- USACO Section 1.4 Mother's Milk 解题报告
题目 题目描述 有三个牛奶桶,三个桶的容积分别是A,B,C,最小为1,最大为20.刚开始只有第三个桶里面装满了牛奶,其余两个桶都是空的.我们现在可以将第三个桶中的牛奶往其他两个桶里面倒一些牛奶,然后还 ...
- USACO Section 1.3 Mixing Milk 解题报告
题目 题目描述 Merry Milk Makers 公司的业务是销售牛奶.它从农夫那里收购N单位的牛奶,然后销售出去.现在有M个农夫,每个农夫都存有一定量的牛奶,而且每个农夫都会有自己的定价.假设所有 ...
- USACO Section1.3 Mixing Milk 解题报告
milk解题报告 —— icedream61 博客园(转载请注明出处)----------------------------------------------------------------- ...
- 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 numb ...
- USACO Section 1.3 Prime Cryptarithm 解题报告
题目 题目描述 牛式的定义,我们首先需要看下面这个算式结构: * * * x * * ------- * * * <-- partial product 1 * * * <-- parti ...
- USACO Section 1.4 Arithmetic Progressions 解题报告
题目 题目描述 现在给你一个数集,里面的数字都是由p^2+q^2这种形式构成的0 <= p,q <= M,我现在需要你在其中找出一个长为N的等差数列,数列中的第一个数字为a,公差为b,当你 ...
随机推荐
- Windows 系统System帐号及权限
今天碰到一同事,在那里删除注册表,死活都删除不掉,想起以前在学校的时候老是被莫名的被别人叫过去修电脑(开玩笑,真觉得那时候的我比现在牛B很多),什么删除不掉的东西没见过,然后小小的百度了一下很快就帮他 ...
- IOS 自定义Operation(下载功能)
一个下载操作就交给一个HMDownloadOperation对象 HMDownloadOperation.h / .m @class HMDownloadOperation; @protocol HM ...
- testng失败重跑
重跑失败场景 1.要添加两个文件 背景:因为这里只是想单独展示失败的重跑的案例,所以先暂时把app这块的运行注释掉,只跑一个简单的demo,就一个简单类,类中就3个测试方法,失败重跑的原理是,运行方法 ...
- php图像处理插件imagick安装(仅适用于86位,php5.4非安全环境-16px)
phpImageMagick-6.7.7-5-Q16-windows-dll(加测试代码,经测试,仅适用于86位,php5.4安全环境-16px) 下载地址:http://pan.baidu.com/ ...
- P1774 最接近神的人_NOI导刊2010提高(02)
P1774 最接近神的人_NOI导刊2010提高(02) 关于此题为什么可以使用求逆序对的方法来做 假设一个数\(a_i\),且前\(i-1\)个数已经成为单调增的数列. 我们要从前\(a_1\)至\ ...
- IIS配置MIME类型
有时候我们上传的视频,如果IIS上没有配置此格式是播放不了的.这个时候需要你在IIS上添加这个类型才能播放. MIME类型 ①打开你的IIS,点你的网站 ②双击 MIME类型 ③右键-->添加 ...
- CSS 滤镜技巧与细节
本文主要介绍 CSS 滤镜的不常用用法,希望能给读者带来一些干货! 注意:ie不兼容 本文所描述的滤镜,指的是 CSS3 出来后的滤镜,不是 IE 系列时代的滤镜,话不多说,直接开车,语法如下: { ...
- 关于package.json学习
1.如果要下载npm包,必须有package.json文件,不然会报错,如果缺少必要字符报错,参考报错信息 2.license,指定用户权限,可以不写,不会报错 3.devDependencies,依 ...
- java XML 通过BeanUtils的population为对象赋值 根据用户选择进行dom4j解析
根据xml文件设计Student对象 <?xml version="1.0" encoding="UTF-8"?> <students> ...
- 触发ionic弹窗区域外的方法
最近项目需要在页面弹窗的时候需要点击弹窗区域外的地方,其实也就是点击页面HTML就可以关闭弹窗, 首先在controller通过js获取到html的dom节点,然后绑定点击事件,话不多说上代码: ...