样例过了,但提交爆0
查看原帖
样例过了,但提交爆0
1080571
111224tim楼主2025/6/14 16:30

#include<iostream>
#include<vector>
#include<climits>
using namespace std;
int main()
{
    int n, m;
    cin >> n >> m;
    vector<int> a(m + 1,0);
    vector<int> b(n + 1,0);
    for (int j = 1; j <= m; j++) cin >> a[j];
    for (int i = 1; i <= n; i++) cin >> b[i];
    vector<int> dp(2 * n + 5, INT_MIN);
    dp[0] = 1;
    for (int j = 1; j <= m; j++) {
        if (a[j] == 1 && 1 <= n) {
            dp[1] = b[1];
        }
    }
    for (int i = 0; i <= 2 * n; i++) {
        for (int j = 0; j <= m; j++) {
            if (a[j] <= i && dp[i - a[j]] != INT_MIN && (i - a[j]) >= 0 && (i - a[j]) < n) {
                dp[i] = max(dp[i], dp[i - a[j]] + b[i]);
            }
        }
    }
    int ans = INT_MIN;
    for (int i = n; i <= 2 * n; i++) {
        ans = max(ans, dp[i]);
    }
    cout << ans;
    return 0;
}
2025/6/14 16:30
加载中...