USACO3.2.4 Feed Ratios (ratios)
2015-01-30 17:42
405 查看
其实就是求一个最简配比a,b,c,t使a(x1,y1,z1)+b(x2,y2,z2)+c(x3,y3,z3)=t(k1,k2,k3)
枚举lam表示目标饲料的份数
枚举第一种饲料的份数 i 和第二种饲料的份数 j ,计算k,比较
注意:各种边界条件
枚举lam表示目标饲料的份数
枚举第一种饲料的份数 i 和第二种饲料的份数 j ,计算k,比较
注意:各种边界条件
/* ID:xsy97051 LANG:C++ TASK:ratios */ #include <cstdio> #include <iostream> using namespace std; int d[4][3]; int main() { freopen("ratios.in", "r", stdin); freopen("ratios.out", "w", stdout); for(int i=0;i<4;++i) for(int j=0;j<3;++j) cin>>d[i][j]; int p; for(p=0;p<3;++p) if(d[3][p]) break; for(int lam=1;lam<=100;++lam) for(int i=0; i<=100 && d[1][0]*i<=d[0][0]*lam && d[1][1]*i<=d[0][1]*lam && d[1][2]*i<=d[0][2]*lam; ++i) for(int j=0; j<=100 && d[1][0]*i+d[2][0]*j<=d[0][0]*lam && d[1][1]*i+d[2][1]*j<=d[0][1]*lam && d[1][2]*i+d[2][2]*j<=d[0][2]*lam; ++j) { int k=(d[0][p]*lam - d[1][p]*i - d[2][p]*j) / d[3][p], kk; for(kk=0;kk<3;++kk) { if(d[1][kk]*i + d[2][kk]*j + d[3][kk]*k != d[0][kk]*lam) break; } if(kk==3) { cout<<i<<" "<<j<<" "<<k<<" "<<lam<<endl; return 0; } } cout<<"NONE"<<endl; return 0; }
相关文章推荐
- USACO3.2.4--Feed Ratios
- [USACO3.2.4 Feed Ratios]
- USACO 3.2.4 feed ratios
- usaco3.2.4 Feed Ratios
- [USACO3.2.4 Feed Ratios]
- USACO3.2.4 Feed Ratios (ratios)
- 【USACO题库】3.2.4 Feed Ratios饲料调配
- 【USACO题库】3.2.4 Feed Ratios饲料调配
- USACO 3.2.4 Feed Ratios
- 【例题】【高斯消元】USACO3.2.4 Feed Ratios
- USACO 3.2 Feed Ratios
- USACO/ratios 3.2.4
- USACO-Section3.2 Feed Ratios【克莱默法则】
- USACO-Feed Ratios(克拉默法则求线性方程组的解)
- USACO / Feed Ratios (枚举||克莱姆法则||高斯消元)
- USACO 3.2 Feed Ratios (ratios)
- USACO Feed Ratios
- usaco Feed Ratios
- USACO 3.2 Feed Ratios(水)
- [USACO3.2]饲料调配 Feed Ratios