usaco3.2.5饲料调配
来源:互联网 发布:c语言中乘方怎么表示 编辑:程序博客网 时间:2024/04/27 17:53
这题听说可以用行列式,但我不会。
这题范围比较小,所以一个一个试过去吧。但个人比较喜欢从总数最小开始,再搜。
#include <iostream>#include <cstdio>
#include <cmath>
#include <algorithm>
#include <iomanip>
using namespace std;
int s[5][5],s1[4];
bool flag[4];
bool flag1;
int main()
{
//freopen("ratios.in","r",stdin);
//freopen("ratios.out","w",stdout);
for(int i=0;i<=3;i++)
for(int j=1;j<=3;j++)
cin>>s[i][j];
for(int i=1;i<=3;i++)
if(s[0][i]==0)flag[i]=true;
for(int n=1;n<=300;n++){
for(int i=0;i<=n&&i<=100;i++){
int n1=n-i;
for(int j=0;j<=n1&&j<=100;j++){
int n2=n1-j;
flag1=false;
for(int k=1;k<=3;k++)
{
s1[k]=s[1][k]*i+s[2][k]*j+s[3][k]*n2;
if(flag[k]&&s1[k]!=0)flag1=true;
}
if(!flag1)
if((flag[1]||(s1[1])%s[0][1]==0)&&(flag[2]||(s1[2])%s[0][2]==0)&&(flag[3]||(s1[3])%s[0][3]==0)){
int n3,kk;
for(kk=1;kk<=3;kk++){
if(flag[kk])continue;
n3=(s1[kk])/s[0][kk];
break;
}
if(kk==3){cout<<i<<" "<<j<<" "<<n2<<" "<<n3<<endl;
return 0;}
for(int kkk=kk+1;kkk<=3;kkk++)
{if(flag[kkk]||n3==(s1[kkk])/s[0][kkk]);
else break;
if(kkk==3){cout<<i<<" "<<j<<" "<<n2<<" "<<n3<<endl;
return 0;}
}
}
}
}
}
cout<<"NONE"<<endl;
return 0;
}
0 0
- usaco3.2.5饲料调配
- 【USACO3.2.4】饲料调配 纯整数高斯消元
- [USACO3.2]饲料调配 Feed Ratios
- 【USACO题库】3.2.4 Feed Ratios饲料调配
- 【USACO题库】3.2.4 Feed Ratios饲料调配
- USACO3.2.5-butter
- USACO3.2.5 Magic Squares (msquare)
- USACO3.2.5 Magic Squares (msquare)
- 购买饲料
- vsftp调配
- 【USACO3.2.5】魔板 康托展开/BFS
- 饲料企业生产管理制度
- 兔子饲料颗粒机
- object-C方法调配
- usaco3.4.1
- USACO3.3
- USACO3.1.6
- excel vba for 调配车间
- 利用securecrt在linux与windows之间传输文件
- 处理大数据的排序(源自书籍:编程珠玑第二版)
- 【 Visual C++】游戏开发笔记之二——最简单的DirectX,vc窗口的编写
- 程序员必看的文章
- Linux Shell编程入门
- usaco3.2.5饲料调配
- 认证
- SQL Server表分区
- String s=new String("abc")创建了几个对象?
- 一个男人的自我修养
- 最大公约数与最小公倍数
- Valid Palindrome
- 智能家居通用管理平台(七) - 即插即用机制的设计
- AttributeSet自定义控件