Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
126280 | mairuisheng | 健康的奶牛 | C++ | 编译错误 | 0 | 0 MS | 0 KB | 1229 | 2024-01-24 14:43:04 |
#include<fstream> #include<iostream> #include<cmath> #include<cstring> using namespace std; int N; int v[25]; int G; int f[15][25]; int s[15]; int p[25]; int minans; int hash[15]; void input() { cin>>N; for (int i=0;i<N;i++) cin>>v[i]; cin>>G; for (int i=0;i<G;i++) for (int j=0;j<N;j++) cin>>f[i][j]; } void dfs(int n) { int ok=1; for (int i=0;i<N;i++) if (p[i]<v[i]) { ok=0; break; } if (ok) { int ans=0; for (int i=0;i<n;i++) ans+=s[i]; if (ans<=minans) { minans=ans; memset(hash,0,sizeof(hash)); for (int i=0;i<G;i++) if (s[i]==1) hash[i]=1; } return; } if (n==G) return; for (s[n]=0;s[n]<=1;s[n]++) { for (int i=0;i<N;i++) p[i]+=f[n][i]*s[n]; dfs(n+1); for (int i=0;i<N;i++) p[i]-=f[n][i]*s[n]; } } int main() { input(); minans=100000; dfs(0); cout<<minans; for (int i=0;i<G;i++) if (hash[i]) cout<<' '<<i+1; cout<<endl; return 0; }