农夫约翰以拥有世界上最健康的奶牛而感到自豪。

奶牛想要保持健康,每天就要补充足量的多种维生素。

约翰为奶牛们准备了多种牛饲料,每种牛饲料中都富含奶牛所需的多种维生素,但是每种维生素的具体含量可能并不相同。

每种牛饲料每天最多只能喂给奶牛们一勺,也就是说每种饲料可以选择不喂给奶牛,或喂给奶牛一勺的量。

现在给定所有饲料的每种维生素的(每勺)具体含量,以及奶牛对于每种维生素的每日最低需求量。

请你求出,保证奶牛各种维生素的每日摄入量达标的情况下,最少需要喂给奶牛多少勺饲料。

数据保证有解。

输入格式
第一行包含一个整数 V,表示共有 V 种所需维生素,编号 1∼V。

第二行包含 V 个不超过 1000 的正整数,其中第 i 个数表示第 i 号维生素的奶牛每日最低需求量。

第三行包含整数 G,表示牛饲料的种类数。

接下来 G 行,每行包含 V 个不超过 1000 的非负整数,其中第 ii 个数表示一种饲料中第 i 号维生素的含量(每勺)。

输出格式
共一行,首先输出一个整数 S,表示最少需要喂给奶牛的饲料数量,接下来输出 S 个升序排列的整数,表示喂给奶牛的饲料的具体编号。

当存在多个解时,输出序列字典序最小的那个解。

数据范围
1≤V≤25,
1≤G≤15
输入样例:
4
100 200 300 400
3
50 50 50 50
200 300 200 300
900 150 389 399
输出样例:
2 1 3
#include <iostream>
#include <cstring>
#include <vector>using namespace std;const int N = 25;int n, m;
//需要的每种维生素量,每一种方案,每种方案求和的结果
int need[N], s[N][N], sum[N];
vector<int> res;int main()
{cin >> m;for(int i = 0; i < m; i++) cin >> need[i];cin >> n;for(int i = 0; i < n; i++)for(int j = 0; j < m; j++)cin >> s[i][j];//枚举每一种方案for(int i = 0; i < 1 << n; i++){memset(sum, 0, sizeof sum);vector<int> t;//检查是否选择了这一行for(int j = 0; j < n; j++){if(i >> j & 1){t.push_back(j);for(int k = 0; k < m; k++)sum[k] += s[j][k];}}//检查是否满足要求bool flag = true;for(int j = 0; j < m; j++)if(sum[j] < need[j]){flag = false;break;}if(flag)if(res.empty() || res.size() > t.size() || (res.size() == t.size() && res > t))//最少数量res = t;}cout << res.size() << ' ';for(auto t : res) cout << t + 1 << ' ';return 0;
}
#include <iostream>
#include <cstring>
#include <vector>using namespace std;const int N = 25;int n, m;
int need[N], s[N][N], sum[N];
vector<int> res, t;//对每一种选出来的方案t进行判断
bool check()
{memset(sum, 0, sizeof sum);for(int i = 0; i < m; i++){for(int j = 0; j < t.size(); j++)sum[i] += s[t[j]][i];if(sum[i] < need[i]) return false;}if(res.empty() || res.size() > t.size() || (res.size() == t.size() && res > t))return true;return false;
}void dfs(int u)
{if(u > n){if(check()) res = t;return;}//选择u这行t.push_back(u);dfs(u + 1);t.pop_back();//不选择u这行dfs(u + 1);
}int main()
{cin >> m;for(int i = 0; i < m; i++) cin >> need[i];cin >> n;for(int i = 0; i < n; i++)for(int j = 0; j < m; j++)cin >> s[i][j];dfs(0);cout << res.size() << ' ';for(auto t : res) cout << t + 1 << ' ';return 0;
}

USACO健康的荷斯坦奶牛(DFS,二进制暴力枚举)相关推荐

  1. [USACO2.1] 健康的荷斯坦奶牛 dfs

    原题:https://www.luogu.org/problemnew/show/P1460 //USACO2.1 健康的荷斯坦奶牛 //by dadatu #include<iostream& ...

  2. USACO 2.1 健康的荷斯坦奶牛 Healthy Holsteins

    健康的荷斯坦奶牛 题目描述 农民JOHN以拥有世界上最健康的奶牛为傲.他知道每种饲料中所包含的牛所需的最低的维他命量是多少.请你帮助农夫喂养他的牛,以保持它们的健康,使喂给牛的饲料的种数最少. 给出牛 ...

  3. 【暴力枚举】二进制枚举-幼儿园买玩具

    [暴力枚举]二进制枚举-幼儿园买玩具 #include<iostream> #include<cstring> using namespace std; int main(){ ...

  4. 洛谷 P1460 健康的荷斯坦奶牛 Healthy Holsteins

    P1460 健康的荷斯坦奶牛 Healthy Holsteins 题目描述 农民JOHN以拥有世界上最健康的奶牛为傲.他知道每种饲料中所包含的牛所需的最低的维他命量是多少.请你帮助农夫喂养他的牛,以保 ...

  5. codeforces数学1600day6[CodeForces - 1029C多区间交+枚举,CodeForces 992C[数学公式推导],CodeForces 992B[质因数分解+暴力枚举]]

    A - Maximal Intersection CodeForces - 1029C 题目大意:就是给你n个区间,这n个区间有公共的区间长度为x,现在叫你从这n个区间中删掉一个使得x最大化. 解题思 ...

  6. YBTOJ:灯光控制(贪心)(公倍数)(暴力枚举)

    文章目录 题目描述 解析 代码 题目描述 解析 没有想出来 首先可以确定开关要么开一次,要么不动,其他都和这俩是等价的 一开始最先想到的就是贪心的方法,每个开关遍历,如果按下会使答案变好就按下. 但是 ...

  7. P1217 [USACO1.5]回文质数 Prime Palindromes(技巧+暴力枚举+线性筛)

    技巧:就是偶数位的回文数字一定不是质数---------证明:奇数位之和sum1==偶数位之和sum2的数字可以被11整除.(11除外,这是一个坑点) 最高位,最低位必须是 1, 3, 7, 9 暴力 ...

  8. 健康的荷斯坦奶牛-USACO-USACO阶梯-第2章.更大的挑战

    题目描述 2.1.4 Healthy Holsteins健康的荷斯坦奶牛 (holstein.pas/c/cpp) 农民JOHN以拥有世界上最健康的奶牛为傲.他知道每种饲料中所包含的牛所需的最低的维他 ...

  9. 新手入门刷题(专题三)暴力枚举

    新手入门刷题(专题三)暴力枚举--->持续更新 4.14 统计方形(数据加强版) 题目描述 有一个 n×m 方格的棋盘,求其方格包含多少正方形.长方形(不包含正方形). 输入格式 一行,两个正整 ...

最新文章

  1. [Erlang33]使用recon从网页查看Erlang运行状态
  2. (筆記) 如何安裝Altera USB Blaster? (SOC) (Quartus II) (DE2)
  3. Android开源控件ViewPager Indicator的使用方法
  4. 单点登录解决方案-CAS
  5. SharePoint列表下拉框优化
  6. 远程调用python_远的解释|远的意思|汉典“远”字的基本解释
  7. 利用计算机进行国际贸易的弊端,国际贸易中的计算机应用体系建设浅析
  8. Java StringBuilder
  9. 转:如何在Ubuntu系统下安装使用LaTeX
  10. 浏览器主页被360篡改怎么办?
  11. b和kb的换算_G,M,KB,B,b,MB/s,Mb/s,bps等等之间的换算
  12. 小喵的VUE项目搭建(一)
  13. 暴雪这次可真不要脸。。。
  14. 极限理论总结01:随机变量的四种收敛、CMT及Slutsky定理
  15. 一种简单的色彩平衡算法的OPENCV实现
  16. 金仓数据库 KingbaseES 与 Oracle 的兼容性说明(4. SQL)
  17. GraphicsLab Project之光照贴图烘焙(一)
  18. GridView 72般绝技 转自清清月儿收藏
  19. 控制结构(强化):12.阿迪玩游戏
  20. 【Python】打断点

热门文章

  1. Java基础---继承、抽象、接口
  2. 手动清除网卡IP地址的方法
  3. 统计-Bonferroni 方法
  4. 【C语言内功心法】__weak -- 示弱也是一种强大
  5. 卸妆·回归:“超级医保局时代“的医院信息化转型
  6. 网络安全从业人员应具备的职业素养
  7. PowerPoint 教程:如何在 PowerPoint 中从大纲创建演示文稿?
  8. Batch和Epoch之间的区别是什么?
  9. Filter中chain.doFilter(req, res)的理解
  10. Win7 各种语言包下载