使用排列组合,遍历所有可能的情况C(1)+C(2)+C(3)……C(n)= 2^G种组合

数据规模不大,暴力过去最多也就是2^15 = 23768种情况

所以就暴力咯,不过还是Debug了一会

Source Code:

  1. /*
  2. ID: wushuai2
  3. PROG: holstein
  4. LANG: C++
  5. */
  6. //#pragma comment(linker, "/STACK:16777216") //for c++ Compiler
  7. #include <stdio.h>
  8. #include <iostream>
  9. #include <fstream>
  10. #include <cstring>
  11. #include <cmath>
  12. #include <stack>
  13. #include <string>
  14. #include <map>
  15. #include <set>
  16. #include <list>
  17. #include <queue>
  18. #include <vector>
  19. #include <algorithm>
  20. #define Max(a,b) (((a) > (b)) ? (a) : (b))
  21. #define Min(a,b) (((a) < (b)) ? (a) : (b))
  22. #define Abs(x) (((x) > 0) ? (x) : (-(x)))
  23. #define MOD 1000000007
  24. #define pi acos(-1.0)
  25.  
  26. using namespace std;
  27.  
  28. typedef long long ll ;
  29. typedef unsigned long long ull ;
  30. typedef unsigned int uint ;
  31. typedef unsigned char uchar ;
  32.  
  33. template<class T> inline void checkmin(T &a,T b){if(a>b) a=b;}
  34. template<class T> inline void checkmax(T &a,T b){if(a<b) a=b;}
  35.  
  36. const double eps = 1e- ;
  37. const int M = ;
  38. const ll P = 10000000097ll ;
  39. const int INF = 0x3f3f3f3f ;
  40. const int MAX_N = ;
  41. const int MAXSIZE = ;
  42.  
  43. int vv[], aa[][];
  44. int ans[], a[], cur[];
  45. int v, g;
  46.  
  47. void dfs(int n, int w, int a[]){
  48.  
  49. int i, j;
  50. memset(cur, , sizeof(cur));
  51. for(i = ; i <= a[]; ++i){
  52. for(int j = ; j < v; ++j){
  53. cur[j] += aa[a[i]][j];
  54. }
  55. }
  56. for(i = ; i < v; ++i){
  57. if(cur[i] < vv[i]) break;
  58. }
  59. if(i == v){
  60. if(w < ans[]){
  61. /*
  62. for(int i = 1; i <= a[0]; ++i){
  63. cout << a[i] + 1 << ' ';
  64. }
  65. cout << endl;
  66. */
  67. for(i = ; i <= a[]; ++i){
  68. ans[i] = a[i];
  69. }
  70. return;
  71. }
  72. }
  73. for(int i = n + ; i < g; ++i){
  74. ++a[];
  75. a[a[]] = i;
  76. dfs(i, w + , a);
  77. --a[];
  78. }
  79. }
  80.  
  81. int main() {
  82. ofstream fout ("holstein.out");
  83. ifstream fin ("holstein.in");
  84. int i, j, k, t, n, s, c, w, q;
  85.  
  86. fin >> v;
  87. for(i = ; i < v; ++i){
  88. fin >> vv[i];
  89. }
  90. fin >> g;
  91. for(i = ; i < g; ++i){
  92. for(j = ; j < v; ++j){
  93. fin >> aa[i][j];
  94. }
  95. }
  96. ans[] = INF;
  97. for(i = ; i < g; ++i){
  98. a[] = ;
  99. a[] = i;
  100. dfs(i, , a);
  101. }
  102. fout << ans[];
  103. for(i = ; i <= ans[]; ++i){
  104. fout << ' ' << ans[i] + ;
  105. }
  106. fout << endl;
  107.  
  108. fin.close();
  109. fout.close();
  110. return ;
  111. }

USACO Healthy Holsteins DFS的更多相关文章

  1. USACO Healthy Holsteins

    首先看题目: Healthy HolsteinsBurch & Kolstad Farmer John prides himself on having the healthiest dair ...

  2. USACO 2.1 Healthy Holsteins

    Healthy HolsteinsBurch & Kolstad Farmer John prides himself on having the healthiest dairy cows ...

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

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

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

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

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

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

  6. 【USACO 2.1】Healthy Holsteins

    /* TASK: holstein LANG: C++ URL: http://train.usaco.org/usacoprob2?a=SgkbOSkonr2&S=holstein SOLV ...

  7. USACO Section2.1 Healthy Holsteins 解题报告 【icedream61】

    holstein解题报告 --------------------------------------------------------------------------------------- ...

  8. USACO1.6 Healthy Holsteins【dfs/bfs 爆搜】

    题目传送门 饲料种数只有15 枚举每种选或不选一共也就只有$2^{15}=32768$ 爆搜可过觉得bfs要快一些? 但是dfs更方便处理字典序 只需要顺序遍历并且先搞选它的情况就可以了 而且在这种规 ...

  9. USACO Section 2.1 Healthy Holsteins

    /* ID: lucien23 PROG: holstein LANG: C++ */ #include <iostream> #include <fstream> #incl ...

随机推荐

  1. Python学习笔记 (2) :字符串输出、操作、格式化和日期、时间格式化

    一.字符串输出及运算 1.常用输出格式及方法 ')#单引号 ")#双引号 """)#三个引号 1234567890 1234567890 1234567890 ...

  2. FastJson中@JSONField注解使用

    最近做项目中,使用了json格式在服务器之间进行数据传输.但是发现json格式数据不符合JAVA中的变量定义规则,并且难以理解,因此需要在后台中做二次处理,将数据处理成我们系统中定义的格式. 思路: ...

  3. php 登录实例演示

    <pre name="code" class="python">一.模板的使用 (重点) a.规则 模板文件夹下[TPL]/[分组文件夹/][模板主 ...

  4. C++模板:读入优化

    int scan(int &x){ while(c=getchar(),c<'0'||c>'9');x=c-'0'; while(c=getchar(),c>='0'& ...

  5. C++访问权限的问题

    以前一直认为对于类中的private数据成员,只有调用该方法的对象才能更能访问自身的私有成员,其他的类在该成员函数(公共接口)中也无法调用自身的私有成员,今天看到<c++ prime plus& ...

  6. c++ cout 保留小数点位

    需要头文件 <iomanip> 输出时需要用 fixed 和 setprecision() fixed代表输出浮点数,setprecision()设置精度. #include <io ...

  7. VS2010/MFC说明

    此栏目大多数内容转自鸡啄米http://www.jizhuomi.com/ 方便使用对其内容做了少量修改,仅是个人收藏使用,不做其它用途.

  8. windows下使用python googleprotobuf

    首先下载:protobuf-2.5.0.tar.gz 和protoc-2.5.0-win32.zip.两者的版本要对应: 将下载的google protobuf解压,会看到一个python目录,Win ...

  9. js正则表达式验证字符长度

    原理,就是把一个汉字替换为两个字母,来实现长度验证. //js正则验证字符长度 第一种:直接输出长度 alert('1sS#符'.replace(/[^\x00-\xff]/g, 'AA').leng ...

  10. 创建BDC(Business Data Connectivity Service)

    创建Business Data Connectivity http://blog.csdn.net/spfarm/article/details/44015915 创建和使用Business Data ...