Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
148134 | 王容宇 | FATE | C++ | 通过 | 100 | 0 MS | 288 KB | 643 | 2024-05-21 22:39:52 |
#include <bits/stdc++.h> using namespace std; int dp[101][101]; int a[101]; int p[101]; int main() { int n, m, s, k; while(scanf("%d%d%d%d", &n, &m, &k, &s)!=EOF) { memset(dp, 0, sizeof(dp)); for(int i=0; i<k; i++) { scanf("%d%d", &a[i], &p[i]); } int ans=-1; for(int i=0; i<k; i++) { for(int j = p[i]; j<=m; j++) { for(int l = 1; l<=s; l++) { dp[j][l]=max(dp[j][l], dp[j-p[i]][l-1]+a[i]); } } } if(dp[m][s]>=n) { for(int i=0; i<=m; i++) { if(dp[i][s]>=n) { ans=m-i; break; } } } cout << ans << endl; } return 0; }