正题
题目大意
nnn个物品有ai,bi,via_i,b_i,v_iai,bi,vi,要求
选择若干个物品使得aia_iai之和大于AAA,bib_ibi之和大于BBB,viv_ivi之和最小
解题思路
暴力dfsdfsdfs选哪些。
时间复杂度O(2n)O(2^n)O(2n)
codecodecode
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=23;
int a,b,n,ans;
int w[N],v[N],p[N];
void dfs(int dep,int A,int B,int cost)
{if(A>=a&&B>=b){ans=min(ans,cost);return;}if(dep>n)return;dfs(dep+1,A+w[dep],B+v[dep],cost+p[dep]);dfs(dep+1,A,B,cost);
}
int main()
{scanf("%d%d%d",&a,&b,&n);for(int i=1;i<=n;i++)scanf("%d%d%d",&w[i],&v[i],&p[i]);ans=2147483647;dfs(1,0,0,0);printf("%d",ans);
}