1 solutions
-
0
#include<bits/stdc++.h> using namespace std; int main() { int m,n,k; cin>>m>>n>>k; vector<int> a(n),b(n); for(int i=0;i<n;i++) cin>>a[i]; for(int i=0;i<n;i++) cin>>b[i]; int ans=-1;//初始化题目数量 for(int i=0;i<1<<n;i++) { vector<int> sum(m+1,0); int cnt=0; bitset<32> aa(i); for(int j=0;j<n;j++) //统计个数和分数 { if(aa[j]==1) { cnt++; sum[a[j]]+=b[j]; } } bool st=true; for(int j=1;j<=m;j++) { if(sum[j]<k) { st=false; break; } } if(st==false) continue; bool st2=true; int last=-1; for(int j=0;j<n;j++) { if(aa[j]==1) { if(a[j]==last) { st2=false; //出现选择相同的 break; } last=a[j];//更新上一个 } } if(st2==false) continue; if(ans==-1||cnt<ans) { ans=cnt; } } cout<<ans; return 0; }
- 1
Information
- ID
- 2204
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 10
- Tags
- # Submissions
- 40
- Accepted
- 1
- Uploaded By