比赛 |
20160708BDFS |
评测结果 |
AWWWWWWWWW |
题目名称 |
荷斯坦奶牛 |
最终得分 |
10 |
用户昵称 |
Mealy |
运行时间 |
0.004 s |
代码语言 |
C++ |
内存使用 |
0.32 MiB |
提交时间 |
2016-07-08 10:03:05 |
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <algorithm>
const int nmax=35;
using namespace std;
int need[nmax],n,m,Minl;
int VTM[nmax][nmax],ans=0;
int main()
{
int i,j,k;
freopen("holstein.in","r",stdin);
freopen("holstein.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&need[i]);
scanf("%d",&m);
for(i=1;i<=m;i++)
for (j=1;j<=n;j++)
scanf("%d",&VTM[i][j]);
Minl=0x7fffffff;
for(i=1;i<=(1<<m)-1;i++)
{
int count=0,total[nmax]={0};
for(k=0;k<m;k++)
if(((1<<k)&i)==(1<<k))
count++;
if(count>Minl)
continue;
for(k=0;k<m;k++)
if(((1<<k)&i)==(1<<k))
for(j=1;j<=n;j++)
total[j]+=VTM[k+1][j];
for(j=1;j<=n;j++)
if(total[j]<need[j])
continue;
if((count<Minl)||((count==Minl)&&(ans>i)))
{
ans=i;
Minl=count;
}
}
printf("%d ",Minl);
for(k=0;k<m;k++)
if(((1<<k)&ans)==(1<<k))
printf("%d ",k+1);
return 0;
}