/*
ID: weitong4
LANG: C++
TASK: holstein
*/
#include<stdio.h>
#include<string.h>
#define v_max 25+5
#define g_max 15+5 int v,g;
int a[v_max],b[g_max][v_max];
int ans[v_max],min,res[v_max];
bool vis[v_max]; void dfs(int cur,int cnt,int sol,int temp[]){
if(sol>=v){
if(cnt<min){
min=cnt;
for(int i=;i<cnt;i++){
ans[i]=res[i];
}
}
return;
}
for(int i=cur;i<=g;i++){
if(vis[i]){
continue;
}
vis[i]=true;
res[cnt]=i;
int count=;
int t[v_max];
for(int j=;j<=v;j++){
t[j]=temp[j];
if(temp[j]<=){
continue;
}
t[j]=temp[j]-b[i][j];
if(t[j]<=){
count++;
}
}
dfs(i+,cnt+,sol+count,t);
vis[i]=false;
}
} int main(){
freopen("holstein.in","r",stdin);
freopen("holstein.out","w",stdout);
while(~scanf("%d",&v)){
memset(vis,false,sizeof(vis));
for(int i=;i<=v;i++){
scanf("%d",&a[i]);
}
scanf("%d",&g);
for(int i=;i<=g;i++){
for(int j=;j<=v;j++){
scanf("%d",&b[i][j]);
}
}
min=;
dfs(,,,a);
printf("%d",min);
for(int i=;i<min;i++){
printf(" %d",ans[i]);
}
puts("");
}
}

最新文章

  1. 关于js中的this
  2. 循序渐进,了解Hive是什么!
  3. Iptables工作原理使用详解
  4. 将IIS6.0中的某页设置成首页
  5. (ios)MPMoviePlayerController首次播放视频的时候,没有控制条
  6. Android 图片三级缓存
  7. bzoj4130: [PA2011]Kangaroos
  8. 用 Wireshark 图解:TCP 三次握手
  9. 学习Shell脚本编程(第2期)_编写修改权限及执行Shell程序的步骤
  10. cocos2d-x 扩充引擎基类功能 引起的头文件重复包含问题的分析
  11. jq实现点击按钮后倒计时,多用于手机验证
  12. How to spend you day ?
  13. 移动端利用rem实现自适应布局
  14. poj 1200字符串hash
  15. Java 管程解决生产者消费者问题
  16. tcp的粘包现象与解决方案
  17. linux一次性解压多个.gz或者.tar.gz文件
  18. JAVA经典面试题:讲一讲JVM的组成
  19. 微信小游戏canvas操作
  20. Android Studio 代码导航快捷键总结

热门文章

  1. 廖雪峰Java13网络编程-3其他-2RMI远程调用
  2. 我的服装DRP之即时通讯——为WCF增加UDP绑定(应用篇)
  3. SpringBoot学习笔记(六):SpringBoot实现Shiro登录控制和权限控制
  4. Cesium官方教程8-- 几何体和外观效果
  5. 关于obj文件的理解
  6. mysql 中将汉字(中文)按照拼音首字母排序
  7. Odoo的权限
  8. PHP--时间搜索插件封装
  9. php循环语句(二)
  10. python冒泡排序算法的实现代码