当前位置: 首页 > news >正文

1023. 【USACO题库】2.1.4 Healthy Holsteins健康的好斯坦奶牛

输出文件名(Input: holstein.in, Output: holstein.out)

时间限制: 1 s 空间限制: 256 MB

题目描述 :

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

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

输入 :

从文件holstein.in中读入数据。

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

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

第3行:一个整数G(1<=G<=15),表示可用来喂牛的饲料的数量。下面G行,第i行表示编号为i饲料包含的各种维他命的量的多少。

输出 :

输出到文件holstein.out中。

输出文件只有一行,包括:

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

样例输入 :
4 100 200 300 400 3 50 50 50 50 200 300 200 300 900 150 389 399
样例输出 :
2 1 3
解题思路:

因为 G 最大只有 15,所以我们可以枚举所有饲料组合(子集),检查是否满足维生素需求,找到包含饲料数最少的那一组。

步骤:
  1. 读入 V、维生素需求数组、G、每种饲料的维生素含量。

  2. 使用 DFS(深度优先搜索)枚举所有子集,也可用二进制枚举。

  3. 每次枚举到一个组合时,计算各种维生素的总量。

  4. 判断是否满足所有维生素的最低需求。

  5. 若满足且饲料数量小于当前最优解,则更新最优方案。

  6. 输出最优方案的种数及编号(编号从 1 开始)。

代码:
#include<bits/stdc++.h> using namespace std; int N,M; int v[30]; int vv[1010][1010]; int vis[30]; int temp[25]; int rst=25; int isok(int *A,int cur) { int i,j,sum; for (i=0;i<N;i++) { sum=0; for(j=0;j<cur;j++) sum=sum+vv[A[j]][i]; if(sum<v[i]) return 0; } return 1; } void print_subset(int n,int* A,int cur) { int i; if(isok(A,cur)&&cur<rst) { rst=cur; for(i=0;i<cur+1;i++) { vis[i]=A[i]; } } int s=cur?A[cur-1]+1:0; for(i=s;i<n;i++) { A[cur]=i; print_subset(n,A,cur+1); } } int main() { freopen("holstein.in","r",stdin); freopen("holstein.out","w",stdout); cin>>N; int i,j; for (i=0;i<N;i++) cin>>v[i]; cin>>M; for (i=0;i<M;i++) for(j=0;j<N;j++) cin>>vv[i][j]; print_subset(M,temp,0); cout<<rst; for(i=0;i<rst;i++) cout<<" "<<(vis[i]+1); cout<<endl; return 0; }

运行语言:C++11。

http://www.gsyq.cn/news/1580673.html

相关文章:

  • React对接DigitalOcean API:从零搭建前端数据流水线
  • 后端开发必看!6种服务端主动推送方案的实战对比
  • 深度解析:抖店行业资质与商品创建合规体系及实操准则
  • AI Agent核心原理与工程落地五模块详解
  • App Platform自定义域名、SSL与CDN配置原理与实战
  • Wireshark网络协议分析实战:从抓包入门到故障排查精要
  • Ubuntu 20.04 LEMP部署实战:Nginx+PHP7.4+MySQL8.0完整配置
  • 三步构建AI API使用数据自动化分析流水线:从账单到洞察
  • MC68010循环模式:硬件级指令优化与嵌入式性能提升
  • 2024年AIGC商业落地指南:从多模态大模型到实战应用
  • XSS攻击脚本全解析:从原理到实战绕过技巧与防御指南
  • MCU低功耗设计:SIM_SD寄存器精准控制外设时钟与唤醒机制
  • Postman自动化CSRF Token认证:环境变量与脚本实战指南
  • 跨越LLM产品评估可操作性差距:从数据到行动的系统方法
  • 零样本学习在软件工程情感分析中的创新应用
  • GLM-5.1代码能力跃迁:从SWE-Bench Pro登顶看大模型工程化落地
  • SRC漏洞挖掘入门指南:从零到一掌握白帽子实战技能
  • MC56F8455x SIM模块深度解析:复位、时钟与功耗管理实战指南
  • 飞书CLI实战指南:办公自动化从命令行开始
  • CentOS 8 安装 Node.js 三套可靠方案与避坑指南
  • 从脚本小子到安全猎人:40个核心姿势构建体系化漏洞挖掘思维
  • Python中__str__和__repr__方法的核心区别与工程实践
  • Gemini 3.1 Flash 计费逻辑深度解析:Token+推理强度双维定价
  • AI模型异常响应5分钟排查指南:从定位到修复的实战路径
  • Seedance 2.0:导演级视频生成与分镜脚本式提示词实践
  • Apache Traffic Server在Ubuntu 14.04上的反向代理实战
  • Qwen3.5中量级模型:35B与235B背后的按需定制范式
  • Web Components事件穿透与CustomEvent语义设计实战
  • NLTK情感分析实战:从环境搭建到可解释流水线
  • Android自定义ActionBar实战:兼容性、主题链与菜单控制