EDCPのD問題が解けないです。解答解説している方を参考にしましたが提出結果がRE(スタックオーバーフローしてる?)になります。どこがおかしいのか、どのような入力でオーバーフローするのか教えてほしいです。
各変数の範囲
1 <= N <= 100
1 <= W <= 10^5
1 <= wi <= W
1 <= vi <= 10^9
#include<iostream> #include<math.h> #include<bits/stdc++.h> #include<queue> #include<cstdio> #include<vector> #include <algorithm> #define rep(i,n) for (int i=0;i<(n);++i) using ll = long long; using namespace std; using P = pair<int,int>; #define INF 1000000000 ll dp[100][101000]; int main(){ int n,W;cin>>n>>W; int w[110],v[110]; for(int i = 0; i < n; i++){ cin>>w[i]>>v[i]; } rep(i,W+1) dp[0][i] = 0; for(int i = 0; i < n; i++){ for(int j = 0; j <= W; j++){ if(w[i] <= j){ dp[i+1][j] = max(dp[i][j],dp[i][j-w[i]]+v[i]); }else{ dp[i+1][j] = dp[i][j]; } } } cout<<dp[n][W]<<endl; return 0; }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/02 05:59