2 条题解
-
1
/*************************************** Note: ***************************************/ #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <string> #include <iomanip> #include <cmath> #include <queue> #include <map> #include <stack> #include <vector> #include <fstream> using namespace std; #define LL long long #define ULL unsigned long long #define ULLI unsigned long long int const int N = 1e6+6; int dp[N]; int main(){ int n,m; cin >> n >> m; for (int i = 1;i<=n;i++){ int s,v,w; cin >> s >> w >> v; for (int j = 1;j<=s;j*=2){ for (int k = m;k>=j*w;k--){ dp[k] = max(dp[k],dp[k - j * w] + j * v); } s-=j; } if (s){ for (int k = m;k>=s*w;k--){ dp[k] = max(dp[k],dp[k - s * w] + s * v); } } } cout << dp[m] << endl; return 0; }
信息
- ID
- 2835
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 51
- 已通过
- 12
- 上传者