我不会做!!!
查看原帖
我不会做!!!
773235
dctc1494楼主2024/5/10 12:16
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

typedef long long LL;

const LL N = 1e1 + 5;
const LL M = 1e3 + 5;

LL n, m, k, r, x, ans = 0, a[N], b[N], c[N], dp[M];

int main(void) {
	memset(dp, 0, sizeof(dp));
	scanf("%lld%lld%lld%lld", &n, &m, &k, &r);
	for (LL i = 1; i <= n; ++i) {
		scanf("%lld", &a[i]);
	}
	sort(a + 1, a + n + 1);
	for (LL i = 1; i <= m; ++i) {
		scanf("%lld", &b[i]);
	}
	for (LL i = 1; i <= m; ++i) {
		scanf("%lld", &c[i]);
	}
	for (LL i = 1; i <= n; ++i) {
		for (LL j = r; j >= b[i]; --j) {
			dp[j] = max(dp[j], dp[j - b[i]] + c[i]);
		}
	}
	for (LL i = 1; i <= k; ++i) {
		if (dp[i] >= k) {
			x = r - i;
			break;
		}
	}
	for (LL i = 1; i <= n; ++i) {
		x -= a[i];
		if (x < 0) {
			break;
		}
		++ans;
	}
	printf("%lld\n", ans);

	return 0;
}

2024/5/10 12:16
加载中...