USACO Healthy Holsteins

题目大意:要你求一个食材序列,使得用的食材最少,并且满足奶牛所有维他命需求

思路:一开始感觉神题啊!不会捉!然后无意撇到食材总共15个......暴力大法好

 

 1 /*{
 2 ID:a4298442
 3 PROB:holstein
 4 LANG:C++
 5 }
 6 */
 7 #include<iostream>
 8 #include<fstream>
 9 #define maxn 500
10 using namespace std;
11 ifstream fin("holstein.in");
12 ofstream fout("holstein.out");
13 //#define fin cin
14 //#define fout cout
15 int vitamin[maxn],a[maxn][maxn],ans[maxn],h;
16 int main()
17 {
18     int v,g;
19     fin>>v;
20     for(int i=1;i<=v;i++)fin>>vitamin[i];
21     fin>>g;
22     for(int i=1;i<=g;i++)
23     {
24         for(int j=1;j<=v;j++)fin>>a[i][j];
25     }
26     int minx=0x3f3f3f3f,minj=-1;
27     for(int i=0;i<=1LL<<g;i++)
28     {
29         int temp[maxn]={0},cnt=0;
30         for(int j=1,idx=1;j<=i;j<<=1,idx++)if((i&j)!=0)
31         {
32             cnt++;
33             for(int k=1;k<=v;k++)
34             {
35                 temp[k]+=a[idx][k];
36             }
37         }
38         int flag=1;
39         for(int j=1;j<=v;j++)if(temp[j]<vitamin[j]){flag=0;break;}
40         if(flag)
41         {
42             if(cnt<minx)
43             {
44                 minx=cnt;
45                 minj=i;
46             }
47         }
48     }
49     fout<<minx<<" ";
50     for(int j=1,idx=1;j<=minj;j<<=1,idx++)if((minj&j)!=0)
51     {
52         ans[++h]=idx;
53     }
54     for(int i=1;i<h;i++)fout<<ans[i]<<" ";
55     fout<<ans[h]<<endl;
56     return 0;
57 }

 

转载于:https://www.cnblogs.com/philippica/p/4320249.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值