[url="http://ace.delos.com/usacoprob2?a=JbTv7diNbha&S=ratios"]英文原题[/url] [url="http://www.wzoi.org/usaco/14%5C403.asp"]中文题译[/url]

大意:给出整数a[i][j]和b[i],i,j=1,2,3,有X={x[i]|i=1,2,3,s.t 存在y,对j=1,2,3 x[1]*a[1][j]+ x[3]*a[2][j]+ x[3]*a[3][j]=y*b[j]},找出X中使x[i]最小的和。举例说明,三组整数为(1:2:3),(3:7:1),( 2:1:2),目标为(3:4:5),则8*(1:2:3) + 1*(3:7:1) + 5*(2:1:2) = (21:28:35) = 7*(3:4:5)。没有比8+1+5更小的了。

数据限制条件:a[i][j],b[i],x[i]均为小于100的整数。

可能是搜索做习惯了,一看到就往搜索上想了,发现,若无小于100的限制条件,难点在于如何记录和判定状态,如何判定无法满足。想了很久没想到合适的办法。此题要求解,必须看英文原题,题译不准确。OK,加了小于100的限制,那么无法满足就是如果100以内都搞不定,就NONE。全部枚举,也就100^3,变得没任何难度了。

再仔细想想,这其实是个线性方程组,x*(1:2:3) + y*(3:7:1) + z*(2:1:2) -k*(3:4:5)=0,常数时间搞定。这么一想,之前100的限制条件其实是给我这种笨蛋留的后门,呵呵。

/*ID: blackco3TASK: ratiosLANG: C++*/#include <iostream>using namespace std;

int main() { freopen("ratios.in", "r", stdin); freopen("ratios.out", "w", stdout);   int feeds[3][3], num[3];  cin >> num[0] >> num[1] >> num[2] ; for( int i=0; i<3; i++)     cin >> feeds[i][0] >> feeds[i][1] >> feeds[i][2] ;  for( int total=1; total<=297; total++) {           for( int i=0; i<=total && i<100; i++) {         register int n0=i ;                      for( int j=0; j<=total-i && j<100 /*&& total-i-j<100*/ ; j++) {              register int n1=j, n2=total-i-j ;               if( n2>=100 )                 continue ;                register int s0 = n0*feeds[0][0] + n1*feeds[1][0] + n2*feeds[2][0] ;               if( s0%num[0] )                   continue ;                register int d=s0/num[0] ;               register int s1 = n0*feeds[0][1] + n1*feeds[1][1] + n2*feeds[2][1] ;               if( s1!=num[1]*d )                   continue ;                register int s2 = n0*feeds[0][2] + n1*feeds[1][2] + n2*feeds[2][2] ;               if( s2!=num[2]*d )                   continue ;                cout << n0 << " " << n1 << " " << n2 << " " << d << endl ;              return 0 ;            }     } } cout << "NONE" << endl ;    return 0;}

USACO Training Section 3.2 Feed Ratios相关推荐

  1. USACO Training Section 1.2 双重回文数 Dual Palindrom

    题目描述 如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做"回文数".例如,12321就是一个回文数,而77778就不是.当然,回文数的首和尾都应是非零的,因此0220就 ...

  2. USACO Training Section 1.1 坏掉的项链Broken Necklace

    题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...

  3. USACO Training Section 1.1 贪婪的送礼者Greedy Gift Givers

    P1201 [USACO1.1]贪婪的送礼者Greedy Gift Givers 题目描述 对于一群(NP个)要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少.在这一个问题中,每个人都准备了一 ...

  4. USACO Training Section 1.1 Your Ride Is Here

    题目描述 众所周知,在每一个彗星后都有一只UFO.这些UFO时常来收集地球上的忠诚支持者.不幸的是,他们的飞碟每次出行都只能带上一组支持者.因此,他们要用一种聪明的方案让这些小组提前知道谁会被彗星带走 ...

  5. USACO Training Section 1.3混合牛奶 Mixing Milk

    题目描述 由于乳制品产业利润很低,所以降低原材料(牛奶)价格就变得十分重要.帮助Marry乳业找到最优的牛奶采购方案. Marry乳业从一些奶农手中采购牛奶,并且每一位奶农为乳制品加工企业提供的价格是 ...

  6. USACO Training Section 1.2 [USACO1.2]回文平方数

    题目描述 回文数是指从左向右念和从右向左念都一样的数.如12321就是一个典型的回文数. 给定一个进制B(2<=B<=20,由十进制表示),输出所有的大于等于1小于等于300(十进制下)且 ...

  7. USACO Training Section 1.2 [USACO1.2]方块转换 Transformations

    题目描述 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案.写一个程序来找出将原始图案按照以下列转换方法转换成新图案的最小方式: 1:转90度:图案按顺时针 ...

  8. USACO Training Section 1.2 挤牛奶Milking Cows

    题目描述 三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶.第一个农民在300秒(从5点开始计时)给他的牛挤奶,一直到1000秒.第二个农民在700秒开始,在 1200秒结束.第三个农民在1500秒开 ...

  9. USACO Training Section 1.1黑色星期五Friday the Thirteenth

    题目描述 13号又是一个星期五.13号在星期五比在其他日子少吗?为了回答这个问题,写一个程序,要求计算每个月的十三号落在周一到周日的次数.给出N年的一个周期,要求计算1900年1月1日至1900+N- ...

最新文章

  1. 如何最好一个管理者?
  2. 对于c语言int类型和float,以及double类型表示范围的计算
  3. Selwyn College, Cambridge
  4. boost::units模块实现测试显式和隐式单位转换
  5. Floating-Rate Note - FRN
  6. 网页简单上传图片 imgareaselect插件
  7. 100万用户服务器_我的应用在一个月内如何增长超过100万用户
  8. SharePoint 2013的REST编程基础
  9. 北大青鸟的班主任好当吗_北大青鸟学校怎么样靠谱吗?
  10. 18春《c语言》在线作业3,华师18春《C语言程序设计A》在线作业参考
  11. HDU 4404 Worms(多边形和圆相交)
  12. NHibernate从入门到精通系列(3)——第一个NHibernate应用程序
  13. python手写识别系统gui_求大神帮助,怎么用wxpython编写一个数字手写体识别系统!...
  14. MySQL基本数据操作
  15. python内置函数系列之str(一)(持续更新)
  16. 电商平台后台管理系统--->系统详细设计(用户登录、商品管理模块)
  17. 利用jackson-dataformat-csv读写csv文件
  18. 零基础如何学习视频制作?超全干货!手把手教你好上手的视频制作技巧
  19. java水彩画效果滤镜,PS通过滤镜给照片制作水彩画效果
  20. python量化交易策略实例_Python进阶量化交易:听说有个回测框架叫backtrader

热门文章

  1. java mail 是什么_JavaMail是什么意思
  2. Total Bummer:关键水滴
  3. vue使用blob下载文件
  4. 高性能超融合服务器,深信服高性能单路服务器aServer-R-1600超融合一体机
  5. 电脑如何连接windows server服务器
  6. MySQL的启动和关闭
  7. element设置自定义选择年月日:日期时间选择器
  8. 听说火狐要换Logo,网友们掀起了一场“战争”
  9. 发烧友自制迷你单片编程器
  10. Chipmunk物理引擎