您需要先学会使用MARKDOWN
请使用回复讨论栏中的“插入代码”
by William_Fangs @ 2019-05-15 23:20:55
希望更丰富的展现?[使用Markdown](https://www.luogu.org/wiki/show?name=帮助:markdown)
by GusyNight @ 2019-05-16 09:59:56
希望更丰富的展现?[使用Markdown]()
by huyang2007 @ 2019-05-16 10:02:14
```cpp
include<stdio.h>
include<iostream>
include<algorithm>
using namespace std; int w[99999999],v[99999999],f[9999][9999]={0}; int main() { int n,m,i,j,x,y; scanf("%d%d",&n,&m); for(i=1;i<=n;i++) { scanf("%d%d",&w[i],&v[i]); } for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { if(j>=w[i]) { f[i][j]=max(f[i][j],f[i-1][j-w[i]]+v[i]); x=f[i][j];
}
else
{
f[i][j]=f[i-1][j];
x=f[i][j];
}
}
}
cout<<x;
}
```
by WaterDorp @ 2019-12-16 21:39:41
@[WaterDorp](/user/228703)
整理代码
by WaterDorp @ 2019-12-16 21:40:30
# 建议直接转一维
# 这个是01背包模板啊!
# 二维要超空间的!!!
```cpp
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n, m;
int dp[10000005];
int w[10000], v[10000];
signed main(){
cin >> n >> m;
for(int i = 1; i <= n; i++)
cin >> w[i] >> v[i];
for(int i = 1; i <= n; i++)
for(int j = m; j >= w[i]; j--)
dp[j] = max(dp[j], dp[j-w[i]]+v[i]);
cout<<dp[m]<<endl;
return 0;
}
```
by Candycar @ 2021-07-13 20:02:52
$1 ≤ N ≤ 3,402 $
$1 ≤ Wi ≤ 400$
$1 ≤ Di ≤ 100$
$1 ≤ M ≤ 12,880$
by Candycar @ 2021-07-13 20:04:48