提交时间:2026-07-17 11:08:43
运行 ID: 92653
#include <cstdio> #include <cstring> #define max(a, b) (((a) > (b)) ? (a) : (b)) int dp[1010][1010]; int w[1010]; int c[1010]; int N, C; void solve() { scanf("%d %d", &N, &C); for(int i = 1; i <= N; i++) scanf("%d", &w[i]); for(int i = 1; i <= N; i++) scanf("%d", &c[i]); for(int i = 1; i <= N; i++) { for(int j = 0; j <= C; j++) { if(j >= c[i]) dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - c[i]] + w[i]); else dp[i][j] = dp[i - 1][j]; } } printf("%d\n", dp[N][C]); } int main() { solve(); return 0; }