/*
ID: lucien23
PROG: holstein
LANG: C++
*/ #include <iostream>
#include <fstream>
#include <vector>
using namespace std; bool compFun(int x, int y)
{
int temp, i = 0; while (true)
{
temp = 1 << i;
if (temp&x > temp&y)
{
return true;
} else if (temp&x < temp&y)
{
return false;
}
i++;
}
} int main()
{
ifstream infile("holstein.in");
ofstream outfile("holstein.out");
if(!infile || !outfile)
{
cout << "file operation failure!" << endl;
return -1;
} int arrCnt[15] = {1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767}; int V;
infile >> V;
int *minRequire = new int[V];
for (int i=0; i<V; i++)
{
infile >> minRequire[i];
}
int G;
infile >> G;
int **feeds = new int *[G];
for (int i=0; i<G; i++)
{
feeds[i] = new int[V];
for (int j=0; j<V; j++)
{
infile >> feeds[i][j];
}
} int minScoopsCnt = 16;
int minScoops = 0; int *sumVita = new int[V];
int sumScoops;
for (int i=1; i<=arrCnt[G-1]; i++)
{//穷举遍历每一种方案
for (int k=0; k<V; k++)
{
sumVita[k] = 0;
}
sumScoops = 0; for (int j=0; j<G; j++)
{//推断此方案中是否包括饲养类型j(利用移位运算)
int temp = 1 << j;
if ((temp & i) == temp)
{//包括类型j
for (int k=0; k<V; k++)
{
sumVita[k] += feeds[j][k];
}
sumScoops++;
}
} int k;
for (k=0; k<V; k++)
{
if (sumVita[k] < minRequire[k])
break;
}
if (k==V && (sumScoops<minScoopsCnt || (sumScoops==minScoops && compFun(minScoops, i))))
{
minScoopsCnt = sumScoops;
minScoops = i;
}
} outfile << minScoopsCnt;
for (int j=0; j<G; j++)
{
int temp = 1 << j;
if ((temp & minScoops) == temp)
{
outfile << " " << j+1;
}
}
outfile << endl; return 0;
}

最新文章

  1. 【hadoop】如何向map和reduce脚本传递参数,加载文件和目录
  2. python Requests模块的简要介绍
  3. linux查看memcached状态
  4. CSS3属性(二)
  5. 对于Oracle analyze table的使用总结 . 对于Oracle analyze table的使用总结 .
  6. UnitOfWork机制的实现和注意事项
  7. bzoj4010: [HNOI2015]菜肴制作【拓扑排序】
  8. CDN工作机制和负载均衡
  9. oracle学习笔记(二) 基本数据类型
  10. RabbitMQ 学习日记
  11. ionic2 获取dom节点
  12. for循环比较
  13. HTML5 元素属性介绍
  14. Redis 学习笔记(十二)Redis 复制功能详解 ----- (error) READONLY You can&#39;t write against a read only slave
  15. meta标签使用方法总结
  16. jquery菜单插件
  17. 【转】Java学习---Java核心数据结构(List,Map,Set)使用技巧与优化
  18. 关于 wsdl2Java 自动生成客户端调取webservice接口
  19. maven+nexus配置本地私有仓库
  20. jquery-numberformatter插件

热门文章

  1. linux分析日志的一些常用方法
  2. netty常用使用方式
  3. 新一代的昆明网络seo优化技巧
  4. C#.Net调用VB.Net中的MY
  5. Python之numpy模块array简短学习
  6. 【python】内置函数总结(一)
  7. ASP.NET Core 认证与授权[6]:授权策略是怎么执行的?
  8. PHP strftime()函数输出乱码问题
  9. 1.Servlet介绍 和 HTTP协议简述
  10. 《Linux命令行与shell脚本编程大全》第十三章 更多的结构化命令