公司:美团
类型:01背包
题目
题意:大于等于x的最小数
//外卖满减
#include <bits/stdc++.h>
using namespace std;
const int N = 103;
int p[N];
int dp[N*N];
int main(){
//01背包问题
int n, x;
scanf("%d%d", &n, &x);
int sum = 0;
for(int i = 0; i < n; i++){
scanf("%d", &p[i]);
sum += p[i];
}
memset(dp, 0, sizeof dp);
int res = 10000;
for(int i = 0; i < n; i++){
for(int j = min(10000, sum); j >= p[i]; j--){
dp[j] = max(dp[j], dp[j-p[i]] + p[i]);
if(dp[j] >= x) res = min(res, dp[j]);
}
}
printf("%d", res);
return 0;
}