1 solutions
-
0
#include <bits/stdc++.h> using namespace std; const int N =15; int arr[N][N]; int cnt[N],cnt2[N],price=1e9; int main(){ int n,m,x; cin>>n>>m>>x; for(int i=1;i<=n;i++){ for(int j=0;j<=m;j++){ cin>>arr[i][j]; } } //枚举子集-->检查是否有满足情况的子集-->选择花费最少的子集 for(int i=0;i<(1<<n);i++){ //用二进制表示每一种方案是否被选中 memset(cnt,0,sizeof cnt); for(int j=n-1,k=1;j>=0;j--)cnt[k++]=(i>>j & 1); //枚举方案中的所有书籍,检查该方案能否满足条件 int p=0; memset(cnt2,0,sizeof cnt2); for(int j=1;j<=n;j++){ if(!cnt[j]) continue; //统计该本书能增加的算法理解度 for(int k=1;k<=m;k++) cnt2[k]+=arr[j][k]; p+=arr[j][0]; } //检查 int j; for(j=1;j<=m;j++) if(cnt2[j]<x) break; if(j>m) price =min(price,p); } if(price ==1e9) cout<<-1; else cout<<price; return 0; }
Information
- ID
- 2680
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 5
- Tags
- # Submissions
- 4
- Accepted
- 3
- Uploaded By