链接

洛谷
USACO


大意

给定nnn种维生素的需求量,对于第iii种维生素的需求量,记为a[i]a[i]a[i]

给定mmm种饲料,对于第iii种饲料的第jjj种维生素,其能增加b[i][j]b[i][j]b[i][j]点维生素

问最少需要几个饲料,如果有多组解,输出最小的那个。

数据范围:n≤25,m≤15n\leq25,m\leq 15n≤25,m≤15


思路

观察数据范围发现mmm很小,于是我们可以dfsdfsdfs或者状态压缩,本人用的是状态压缩。

我们状压mmm个饲料的使用情况,然后进行判断,由于我们选择的顺序是从小到大的,所以自然字典序也是最小的,就不需要判断了。

判断使用了几种饲料的过程可以直接用循环判断,也可以用lowbitlowbitlowbit操作,两种判断方法的时间复杂度都是O(m)O(m)O(m),lowbitlowbitlowbit常数会小很多

总时间复杂度O(2mnm)O(2^mnm)O(2mnm)


代码

/*
ID:hzbismy1
LANG:C++
TASK:holstein
*/
#define file(x) freopen(#x".in","r",stdin);freopen(#x".out","w",stdout)
#include<cstdio>
#include<cctype>
#include<cstring>
using namespace std;int n,a[36],b[25][25],m,ansk,ansi,k,s[25];
inline char Getchar()
{static char buf[100000],*p1=buf+100000,*pend=buf+100000;if(p1==pend){p1=buf; pend=buf+fread(buf,1,100000,stdin);if (pend==p1) return -1;}return *p1++;
}
inline int read()
{char c;int d=1,f=0;while(c=Getchar(),!isdigit(c))if(c==45)d=-1;f=(f<<3)+(f<<1)+c-48;while(c=Getchar(),isdigit(c)) f=(f<<3)+(f<<1)+c-48;return d*f;
}
inline void write(register long long x)
{if(x<0)write(45),x=-x;if(x>9)write(x/10);putchar(x%10+48);return;
}//以上为读入输出优化
inline int getk(register int x)//获得x种1的个数
{int ans=0;while((x&-x)!=0)//lowbit操作{ans++;x-=x&-x;}return ans;
}
inline bool check()//判断能否满足需求
{for(register int i=1;i<=n;i++) if(s[i]<a[i]) return false;return true;
}
signed main()
{n=read();for(register int i=1;i<=n;i++) a[i]=read();m=read();ansk=m+1;//记得初始化for(register int i=1;i<=m;i++) for(register int j=1;j<=n;j++) b[i][j]=read();for(register int i=1;i<(1<<m);i++){memset(s,0,sizeof(s));//记得清空for(register int j=0;j<m;j++)if((i>>j)&1) for(register int l=1;l<=n;l++) s[l]+=b[j+1][l];//如果选了则加上if(check())//合法{k=getk(i);if(k<ansk)//个数更少{ansi=i;ansk=k;}           }}write(ansk);for(register int i=0;i<m;i++) if((ansi>>i)&1) putchar(32),write(i+1);//输出putchar(10);//没有这行就会愉快的被USACO卡
}

[USACO2.1]健康的荷斯坦奶牛 Healthy Holsteins相关推荐

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

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

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

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

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

    题目 题目大意 给出一组数和一个G组数 求从G组数中取P组数,使他们的相对应的值相加都大于给定的那一组数 如果有多个解,输出饲料序号最小的(即字典序最小). 题目解析 利用二进制枚举,即1表示取,0表 ...

  4. 洛谷P1460 [USACO2.1]健康的荷斯坦奶牛 Healthy Holsteins

    传送门:https://www.luogu.com.cn/problem/P1460 写这道题题解是因为对于我对题目的理解是对的,思路也比较清晰.但是在DFS代码的技巧上有欠缺导致无法写出完全AC的代 ...

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 用C#去除代码的SourceSafe管理
  2. 常用排序算法对比(时间复杂度、稳定性)
  3. 随机森林为何要有放回抽样
  4. Angular动态表单生成(八)
  5. phpcms调用栏目描述_phpcms标签整理_当前栏目调用
  6. student consulting system
  7. Eclipse启动之一:外壳程序(百度空间迁移)
  8. java write int,void write(byte[] b, int off, int len)
  9. Neo4j:带密码的TF / IDF(和变体)
  10. 土地利用覆被变化的概念_欠压实概念极其荒谬
  11. cv2 inrange灰度图_基于openCV,PIL的深色多背景复杂验证码图像转灰度二值化,并去噪降噪处理分析...
  12. 质疑“扩版=质量下降”——以《中国农学通报》和《安徽农业科学》为例
  13. 售货员的难题(codevs 2596)
  14. ORACLE10g中 ora-12638:身份证明检索失败(
  15. android MVC
  16. 图解设计模式-State模式
  17. 实用网站推荐——office模板(PPT)
  18. java简体字转换繁体字_java代码实现简体繁体转换
  19. 5个APP自动化测试辅助定位工具,你用过几个?
  20. Android游戏开发学习笔记(三):视频的播放

热门文章

  1. 华为分布式文件存储服务器配置,分布式存储服务器
  2. 开博第一篇 往后余生,唯愿你幸福
  3. [SCTF2020]CloudDisk
  4. java服务器常见状态码
  5. INFO zkclient.ZkEventThread - Starting ZkClient
  6. 使用idea打包web项目为war
  7. c++四种cast的原理和用途
  8. 5家同日在港股上市4家破发:有公司获500倍认购,康圣环球等惨烈
  9. 小马哥-----高仿三星G9006(G900S G900H G900W)拆机主板图与开机界面图 6582芯片主板为S105
  10. Linux/Unix关机、重启(shutdown\reboot\halt\init)等命令