码迷,mamicode.com
首页 > 其他好文 > 详细

USACO Healthy Holsteins

时间:2015-03-07 15:27:02      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:

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

思路:一开始感觉神题啊!不会捉!然后无意撇到食材总共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 }

 

USACO Healthy Holsteins

标签:

原文地址:http://www.cnblogs.com/philippica/p/4320249.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!