最后一个点RE求调!
查看原帖
最后一个点RE求调!
1741261
Johnzhw楼主2025/6/18 14:47

代码如下,用的是记忆化搜索版的dp,看了下最后一个点是20000, 30,我的数据范围应该没错吧

#include <bits/stdc++.h>
using namespace std;

const int N = 110;


int n, m;
int memo[N][N];
int v[N], w[N];

int dfs(int i, int j){
    if(i < 0) return 0;
    int& res = memo[i][j];
    if(res != -1) return res;
    if(j < v[i]) return res = dfs(i - 1, j);
    return res = max(dfs(i - 1, j), dfs(i - 1, j - v[i]) + w[i]);
}

int main(){
    cin >> m >> n;
    for(int i = 0; i < n; i++) cin >> v[i], w[i] = v[i];
    memset(memo, -1, sizeof memo);
    int res = m - dfs(n - 1, m);
    cout << res << endl;
    return 0;
}
2025/6/18 14:47
加载中...