题目描述

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

给出牛所需的最低的维他命量,输出喂给牛需要哪些种类的饲料,且所需的饲料剂量最少。

维他命量以整数表示,每种饲料最多只能对牛使用一次,数据保证存在解。

输入输出格式

输入格式:

第1行:一个整数V(1<=V<=25),表示需要的维他命的种类数。

第2行:V个整数(1<=每个数<=1000),表示牛每天需要的每种维他命的最小量。

第3行:一个整数G(1<=G<=15),表示可用来喂牛的饲料的种数。

下面G行,第n行表示编号为n饲料包含的各种维他命的量的多少。

输出格式:

输出文件只有一行,包括

牛必需的最小的饲料种数P

后面有P个数,表示所选择的饲料编号(按从小到大排列)。

如果有多个解,输出饲料序号最小的(即字典序最小)。

输入输出样例

输入样例#1: 复制

4
100 200 300 400
3
50  50  50  50
200 300 200 300
900 150 389 399

输出样例#1: 复制

2 1 3

做了好久做不出来,在精髓那里卡住,弱鸡求过,也是暴力搜索,数据之间的转换有点复杂,有点动归的思想

#include<bits/stdc++.h>
using namespace std;
int species,mix[30],Min[30];
//维生素种类,维生素标准,运算中维生素的和 (用来和维生素标准比较 )
int n,fodder[20][30],k=0,t=50;
//n中食物,第[n]中食物含有的第[i]中维生素为为fodder[n][i],
//k为运算中的食物种类,t为最终的食物种类
int ans[20],output[20];
//运算中的食物种类,最终输出的食物种类bool juge() //用来判断是否满足条件
{for(int i=0;i<species;i++)if(Min[i]<mix[i]) return false;return true;
}
void search(int x)
{   if(juge()) { //这里是精髓,if(k<t){t=k;for(int i=0;i<k;i++)output[i]=ans[i];}return ;}if(x==n) return ;for(int i=0;i<species;i++) //对于第x种食物,选择拿 Min[i]+=fodder[x][i];ans[k++]=x;search(x+1);for(int i=0;i<species;i++)//选择不拿 Min[i]-=fodder[x][i];k--;search(x+1);
}
int main()
{cin>>species;for(int i=0;i<species;i++) cin>>mix[i];cin>>n;for(int i=0;i<n;i++)for(int j=0;j<species;j++)cin>>fodder[i][j];search(0);cout<<t<<' ';for(int i=0;i<t;i++)cout<<output[i]+1<<' ';return 0;
} 

洛谷P1460 健康的荷斯坦奶牛 Healthy Holsteins相关推荐

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

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

  2. 【搜索】洛谷 P1460 健康的荷斯坦奶牛 Healthy Holsteins

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

  3. P1460 健康的荷斯坦奶牛 Healthy Holsteins (简单的dfs)

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

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

    解题思路: 首先想到的是搜索,搜索使用哪几种符合条件的饲料,找最小的花费.由于dfs的特点,先找到的方案一定是字典序最小的. 但是暴力搜索会超时,需要剪枝,详见注释 #include<iostr ...

  5. P1460 健康的荷斯坦奶牛 Healthy Holsteins (dfs)

    重点 之前一直在想 怎么就想不到呢 for(int i=x;i<g;i++)//要从上一个搜的最后一个数开始(因为已经知道前面的没用了) 不然会重复搜 浪费时间(重点剪枝) 不从x开始会超时2个 ...

  6. Java P1460 健康的荷斯坦奶牛 Healthy Holsteins

    题目链接 dfs题目 import java.util.*; import java.math.*; public class Main {public static int[] dx={1,1,-1 ...

  7. [USACO2.1]健康的荷斯坦奶牛 Healthy Holsteins

    链接 洛谷 USACO 大意 给定nnn种维生素的需求量,对于第iii种维生素的需求量,记为a[i]a[i]a[i] 给定mmm种饲料,对于第iii种饲料的第jjj种维生素,其能增加b[i][j]b[ ...

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

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

  9. 洛谷:P1460 [USACO2.1]健康的荷斯坦奶牛 Healthy Holsteins(DFS)

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

最新文章

  1. 【OS学习笔记】二十六 保护模式八:任务门---任务切换
  2. 第二节:如何正确使用WebApi和使用过程中的一些坑
  3. 产品案例:微信状态,有多牛逼?
  4. element ui 分页增删改查_【新插件发布】AzureAD运维Excel版插件,增删改查快10倍c以上!...
  5. 指针的指针指向指针数组的指针
  6. kotlin t class.java_尝试Java,从入门到Kotlin(下)
  7. 几行 python 代码合成 gif / 微信表情~与恶意合成软件说再见【文末附代码】
  8. 华为2288H V5服务器安装win_server_2016问题解决过程
  9. 【老生谈算法】matlab实现遗传算法优化源码——遗传算法
  10. 对union的遍历运算
  11. 汽车软件行业工程师详细介绍?(上)
  12. 牛奶可乐经济学(一)
  13. 堆和栈内存扩展方向问题
  14. parameterType是必须写的吗?
  15. 【平面设计】AI CS 6 软件安装教程
  16. 机器学习和数据科学从业者必读的10本免费英文书
  17. EMI器件原理及应用
  18. bzoj 1718: [Usaco2006 Jan] Redundant Paths 分离的路径
  19. 次世代游戏美术模型的特性和制作流程
  20. 前端人员必须了解的各种浏览器

热门文章

  1. MySQL获取当前时间的各种方式
  2. 通俗易懂理解——双向LSTM
  3. append()、appendChild() 和 innerHTML 的区别
  4. 从数字化转变为数字化敏捷
  5. 泽塔云发布全新AI产品 持续引领超融合云计算创新
  6. android微信登录获取微信账号,微信小程序--登录授权,一键获取用户微信手机号并登录...
  7. 基于SpringBoot + Vue的个人博客系统07——文章列表和文章详情
  8. 中国LED芯片行业市场竞争状况分析及十si五发展趋势研究报告2021~2027年
  9. 多层次边缘特征引导的图像去噪网络
  10. Linux 安装node.js 16