USACO--2.1Healthy Holsteins+状态压缩穷举
来源:互联网 发布:大数据资格认证doop 编辑:程序博客网 时间:2024/06/04 17:56
最多有15种食物,然后对于每种食物有选或者不选两种情况,所以总的情况数只有2^15种,我们可以借助状态压缩,穷举出所有的状态,然后求出最好的情况。
代码如下:
/*ID: 15674811LANG: C++TASK: holstein*/#include<iostream>#include<cstdio>#include<cstring>#include<fstream>using namespace std;#define INF 0x3f3f3f3fint ans[20],cnt;int v[30],a[20][30],G;int main(){ ofstream fout("holstein.out"); ifstream fin("holstein.in"); ///ifstream fin("lkl.txt"); int n; while(fin>>n) { cnt=INF; for(int i=0;i<n;i++) fin>>v[i]; fin>>G; for(int i=0;i<G;i++) for(int j=0;j<n;j++) fin>>a[i][j]; int k=1<<G; for(int i=1;i<k;i++) { int test[30]; int c=0,j=i; while(j) { if(j&1) c++; j=j>>1; } if(c>cnt) continue; int tmp[30]; memset(tmp,0,sizeof(tmp)); j=i; int t=0; int m=0; while(j) { if(j&1) { test[m++]=t; for(int d1=0;d1<n;d1++) tmp[d1]+=a[t][d1]; } j=j>>1; t++; } int i1=0; for(i1=0;i1<n;i1++) if(tmp[i1]<v[i1]) break; if(i1<n) continue; if(c==cnt) { int d1,flag=0; for(d1=0;d1<c;d1++) if(ans[d1]>test[d1]) { flag=1; break; } else if(ans[d1]<test[d1]) break; if(flag) { for(d1=0;d1<c;d1++) ans[d1]=test[d1]; } } if(c<cnt) { cnt=c; for(int d1=0;d1<c;d1++) ans[d1]=test[d1]; } } fout<<cnt<<" "; for(int i=0;i<cnt-1;i++) fout<<ans[i]+1<<" "; fout<<ans[cnt-1]+1<<endl; } return 0;}
1 0
- USACO--2.1Healthy Holsteins+状态压缩穷举
- USACO-Section 2.1 Healthy Holsteins (状态压缩DFS)
- USACO 2.1 Healthy Holsteins
- USACO 2.1-Healthy Holsteins
- USACO 2.1 Healthy Holsteins
- USACO 2.1.5 Healthy Holsteins
- USACO 2.1.4Healthy Holsteins
- [USACO 2.1.4] Healthy Holsteins
- usaco 2.1.4 Healthy Holsteins
- USACO 2.1 Healthy Holsteins (holstein)
- USACO Section 2.1 Healthy Holsteins
- USACO Section 2.1 Healthy Holsteins
- USACO 2.1.4 Healthy Holsteins
- USACO 2.1.4 Healthy Holsteins
- USACO 2.1 Healthy Holsteins (DFS)
- USACO 2.1.4 Healthy Holsteins
- USACO Section 2.1 - Healthy Holsteins 二进制枚举
- USACO 2.1.4 Healthy Holsteins解题报告
- Java开发中的23种设计模式详解
- son数据与JAVA数据的转换
- 算法时间复杂度与空间复杂度分析
- c++关于顺序容器指针迭代器失效问题
- linux cgi httprequest 请求
- USACO--2.1Healthy Holsteins+状态压缩穷举
- 特殊的JSON串的解析
- Velocity语法
- Android assets目录资源读取
- Errors running builder 'DeploymentBuilder' on project
- 用request.files实现异文件上传(开放式上传)
- AdaBoost人脸检测原理
- POJ1068 Parencodings(模拟)
- jQuery之防止冒泡事件