```c
#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
int T,M,t[10001],val[10001],dp[100001],ans=0;
int main()
{
memset(dp,0,sizeof(dp));
cin>>T>>M;
for (int i=1;i<=M;++i)
scanf("%d%d",&t[i],&val[i]);
for (int i=1;i<=M;++i)
for (int j=t[i];j<=T;++j)
{
dp[j]=max(dp[j],dp[T-t[i]]+val[i]);
ans=max(ans,dp[j]);
}
cout<<ans;
return 0;
}
```
by clanned_z @ 2018-02-09 18:05:34
写成这样真的很难看啊[汗]
by sleepyNick @ 2018-02-09 18:05:36
我刚刚评论,你就贴代码了
by sleepyNick @ 2018-02-09 18:06:07
@[394078448kk](/space/show?uid=51419)
```cpp
ans=max(ans,dp[j]);
```
这一步有用吗?`dp[i]`是指在`i`时间内所采得的药的最大价值,所以按照题意输出`dp[T]`不就行了?
by Loner_Knowledge @ 2018-02-09 18:08:56
是dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
by sleepyNick @ 2018-02-09 18:10:13
@[mega_aspirin](/space/show?uid=22658) +1
by qwqKanade @ 2018-02-09 18:10:35
@[394078448kk](/space/show?uid=51419)
by sleepyNick @ 2018-02-09 18:10:39
哦,更改ing
by clanned_z @ 2018-02-09 18:11:18
已A,还有小个错是```
scanf
```是需要调用cstdio函数库的,不过A了就行,谢谢各位大佬!
by clanned_z @ 2018-02-09 18:16:59