USACO chapter 3 section 3 Feed Ratios
USER: tian tianbing [tbbd4261] TASK: ratios LANG: C++ Compiling... Compile: OK Executing... Test 1: TEST OK [0.043 secs, 3016 KB] Test 2: TEST OK [0.032 secs, 3016 KB] Test 3: TEST OK [0.032 secs, 3016 KB] Test 4: TEST OK [0.022 secs, 3016 KB] Test 5: TEST OK [0.022 secs, 3016 KB] Test 6: TEST OK [0.032 secs, 3016 KB] All tests OK.Your program ('ratios') produced all correct answers! This is your submission #18 for this problem. Congratulations!
Here are the test data inputs:
------- test 1 ------- 5 8 0 3 5 4 1 3 0 6 2 0 ------- test 2 ------- 3 4 5 1 2 3 3 7 1 2 1 2 ------- test 3 ------- 20 22 24 4 5 5 9 5 6 12 12 14 ------- test 4 ------- 80 85 80 98 97 96 89 87 88 78 79 80 ------- test 5 ------- 99 99 99 1 0 0 0 1 0 0 0 1 ------- test 6 ------- 93 95 97 98 0 0 0 98 0 0 0 98Keep up the good work!
Thanks for your submission!
直接枚舉就能過了,提交了18次,不知道為什么用fin讀不了,后來還是讓同學幫我改成C的文件讀入才過的
到現在還是不知道為什么。
要注意比例和飼料都是非負的小于100的,也就是說可能出現0的情況,要小心。
/*
ID:tbbd4261
PROG:ratios
LANG:C++
*/
#include<fstream>
#include <stdio.h>
using namespace std;
//fstream fin("ratios.in");
ofstream fout("ratios.out");
int main()
{
int food[4][4];
freopen("ratios.in","r",stdin);
freopen("ratios.out","w",stdout);
int i,j,k,minsum=0xffffff,a=0,b=0,c=0,d=0;
for(i=0; i<4; i++)
for(j=1; j<=3; j++)
scanf("%d",&food[i][j]);
int n1,n2,n3;
bool f1,f2,f=false;
for(i=0; i<=100; i++)
for(j=0; j<=100; j++)
for(k=0; k<=100; k++){
n1=food[1][1]*i+food[2][1]*j+food[3][1]*k;
n2=food[1][2]*i+food[2][2]*j+food[3][2]*k;
n3=food[1][3]*i+food[2][3]*j+food[3][3]*k;
int t=0; f1=false; f2=false;
if(food[0][1]==0){
f1=true;
if(n1!=0)continue;
}else{
if(n1%food[0][1]!=0)continue;
t=n1/food[0][1];
}
if(food[0][2]==0){
f2=true;
if(n2!=0)continue;
}else {
if(n2%food[0][2]!=0)continue;
if(f1==true)t=n2/food[0][2];
else if(n2/food[0][2]!=t)continue;
}
if(food[0][3]==0){
if(n3!=0)continue;
}else{
if(n3%food[0][3]!=0)continue;
if(f1&&f2)t=n3/food[0][3];
if((f1==false ||f2==false)&&n3/food[0][3]!=t)continue;
}
if( n1+n2+n3<minsum&&(n1||n2||n3)){
f=true;
minsum=n1+n2+n3;
a=i; b=j; c=k; d=t;
}
}
if(f) fout<<a<<' '<<b<<' '<<c<<' '<<d<<endl;
else fout<<"NONE"<<endl;
return 0;
}
posted on 2010-08-06 20:08 田兵 閱讀(164) 評論(0) 編輯 收藏 引用 所屬分類: USACO