外卖满减

公司:美团
类型: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;
} 
发布了1205 篇原创文章 · 获赞 54 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/SYaoJun/article/details/105127126