USACO Feed Ratios

  这题就是经典的配饲料, 由于最多配比是100因此可以用暴力解决法, 注意下mod 0的处理, 代码如下:

/*
    ID: m1500293
    LANG: C++
    PROG: ratios
*/

#include <cstdio>
#include <algorithm>
#include <cstring>

using namespace std;
int si[10];
int a[10][10];
int res[10], sum;

void deal(int ii, int jj, int kk)
{
    int now[5];
    now[0] = ii*a[0][0] + jj*a[1][0] + kk*a[2][0];
    now[1] = ii*a[0][1] + jj*a[1][1] + kk*a[2][1];
    now[2] = ii*a[0][2] + jj*a[1][2] + kk*a[2][2];
    for(int i=0; i<3; i++)
        if(si[i]==0 && now[i]!=0) return ;
    int div[5], len=0;
    for(int i=0; i<3; i++)
    {
        if(si[i]==0) continue;
        if(now[i]%si[i]!=0) return;
        div[len++] = now[i]/si[i];
    }
    for(int i=1; i<len; i++)
    if(div[i]!=div[i-1]) return;
    int sm = ii+jj+kk;
    if(sm<sum)
    {
        sum = sm;
        res[0]=ii; res[1]=jj; res[2]=kk; res[3]=div[0];
    }
}

int main()
{
    freopen("ratios.in", "r", stdin);
    freopen("ratios.out", "w", stdout);
    scanf("%d%d%d", &si[0], &si[1], &si[2]);
    for(int i=0; i<3; i++)
        for(int j=0; j<3; j++)
            scanf("%d", &a[i][j]);
    sum = 0x3fffffff;
    for(int i=0; i<=100; i++)
    for(int j=0; j<=100; j++)
    for(int k=0; k<=100; k++)
    {
        if(i==0 && j==0 && k==0) continue;
        if(i==8 && j==1 && k==5)
        {
            int t;
            t = 0;
        }
        deal(i, j, k);
    }
    if(sum == 0x3fffffff)
        printf("NONE\n");
    else
        printf("%d %d %d %d\n", res[0], res[1], res[2], res[3]);
    return 0;
}
时间: 2024-10-13 12:05:05

USACO Feed Ratios的相关文章

洛谷P2729 饲料调配 Feed Ratios

P2729 饲料调配 Feed Ratios 36通过 103提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交  讨论  题解 最新讨论 暂时没有讨论 题目背景 农夫约翰从来只用调配得最好的饲料来喂他的奶牛.饲料用三种原料调配成:大麦,燕麦和小麦.他知道自己的饲料精确的配比,在市场上是买不到这样的饲料的.他只好购买其他三种混合饲料(同样都由三种麦子组成),然后将它们混合,来调配他的完美饲料. 题目描述 给出三组整数,表示 大麦:燕麦:小麦 的比例,找出用这三种饲料调配 x:y

枚举解Feed Ratios

Feed Ratios 1998 ACM Finals, Dan Adkins Farmer John feeds his cows only the finest mixture of cow food,which has three components: Barley, Oats, and Wheat. While he knowsthe precise mixture of these easily mixable grains, he can not buy thatmixture!

Feed Ratios(康托展开 )

Magic SquaresIOI'96 Following the success of the magic cube, Mr. Rubik invented its planar version, called magic squares. This is a sheet composed of 8 equal-sized squares: 1 2 3 4 8 7 6 5 In this task we consider the version where each square has a

USACO 3.2 ratios 高斯消元

题目原意很简单,就是解一个三元一次方程组 直接高斯消元解方程组,枚举最后一列的倍数(k) 注意double的精度,有很多细节需要处理 1 /* 2 PROB:ratios 3 LANG:C++ 4 */ 5 6 #include <stdio.h> 7 #include <math.h> 8 #include <algorithm> 9 #include <iostream> 10 using namespace std; 11 #define maxn 5

[usaco3.2.4]ratios

题目传送门:http://www.nocow.cn/index.php/Translate:USACO/ratios 这道题也是直接枚举... /* ID:abc31261 LANG:C++ TASK:ratios */ #include<cstdio> #include<cstring> #include<iostream> using namespace std; int a[5][5]; int main() { int i,j,l,k,p,ansmin=0x7f

USACO holstein 超时代码

/* ID:kevin_s1 PROG:holstein LANG:C++ */第八组数据跪了,半天都不出结果 #include <iostream> #include <cstdio> #include <string> #include <cstring> #include <vector> #include <map> #include <set> #include <algorithm> #includ

USACO holstein AC code

/* ID:kevin_s1 PROG:holstein LANG:C++ */ #include <iostream> #include <cstdio> #include <string> #include <cstring> #include <vector> #include <map> #include <set> #include <algorithm> #include <cstdlib&g

【USACO 3.2.4】饲料调配

[描述] 农夫约翰从来只用调配得最好的饲料来喂他的奶牛.饲料用三种原料调配成:大麦,燕麦和小麦.他知道自己的饲料精确的配比,在市场上是买不到这样的饲料的.他只好购买其他三种混合饲料(同样都由三种麦子组成),然后将它们混合,来调配他的完美饲料. 给出三组整数,表示 大麦:燕麦:小麦 的比例,找出用这三种饲料调配 x:y:z 的饲料的方法. 例如,给出目标饲料 3:4:5 和三种饲料的比例: 1:2:3 3:7:1 2:1:2 你必须编程找出使这三种饲料用量最少的方案,要是不能用这三种饲料调配目标饲

COGS 696. [IOI1996][USACO 2.3] 最长前缀

★   输入文件:prefix.in   输出文件:prefix.out   简单对比时间限制:1 s   内存限制:128 MB 描述 USACO 2.3.1 IOI96 在生物学中,一些生物的结构是用包含其要素的大写字母序列来表示的.生物学家对于把长的序列分解成较短的序列(即元素)很感兴趣. 如果一个集合 P 中的元素可以通过串联(元素可以重复使用,相当于 Pascal 中的 “+” 运算符)组成一个序列 S ,那么我们认为序列 S 可以分解为 P 中的元素.元素不一定要全部出现(如下例中B