```cpp
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int t,m,c[1001],v[1001],f[1001][1001];
int main()
{
cin>>t>>m;
for(int i=1;i<=m;i++)
{
cin>>c[i]>>v[i];
}
for(int i=1;i<=m;i++)
{
for(int j=t;j>0;j--)
{
if(c[i]<=j)
{
f[i][j]=max(f[i-1][j],f[i-1][j-c[i]]+v[i]);
}
else
{
f[i][j]=f[i-1][j];
}
}
}
cout<<f[m][t];
return 0;
}
```
清楚易懂的代码 qwq
当时学长让做的,我也健忘。
by 哈哈哈哈?? @ 2019-06-26 21:46:37
@[哈哈哈哈??](/space/show?uid=190197) 的确清楚易懂qwq
不过问题是我还是不知道我的代码锅在哪里
(哭辽)
by 美景、 @ 2019-06-26 21:48:06
@[美景、](/space/show?uid=175473)
我也不知道,我是个蒟蒻,给你一个压维的01背包看下,或许会有帮助 qwq
```cpp
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int f[50001];
int c[310000],w[310000];
int n,m;
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>w[i]>>c[i];
}
for(int i=1;i<=n;i++)
{
for(int j=m;j>=w[i];j--)
{
if(f[j-w[i]]+c[i]>f[j])
{
f[j]=f[j-w[i]]+c[i];
}
}
}
cout<<f[m];
return 0;
}
```
by 哈哈哈哈?? @ 2019-06-26 21:51:06
@[美景、](/space/show?uid=175473)
虽然我是真的不信您不会……
但是你的两层循环m和t写反了……
by F1aMiR3 @ 2019-06-26 21:51:46
@[Aiming_High](/space/show?uid=87393) 啊呸,我sb了
by F1aMiR3 @ 2019-06-26 21:52:07
@[哈哈哈哈??](/space/show?uid=190197) 蟹蟹蟹蟹qwq
by 美景、 @ 2019-06-26 21:52:46
@[Aiming_High](/space/show?uid=87393) qwqq
by 美景、 @ 2019-06-26 21:53:13
@[美景、](/space/show?uid=175473) 您快读写炸了?????
by 红色OI再临 @ 2019-06-26 21:54:03
我尝试输出了你的m和t,是一堆乱码
by 红色OI再临 @ 2019-06-26 21:54:37
~~但我一般不写快读~~
by 红色OI再临 @ 2019-06-26 21:55:05