*为什么不能加“dp[v1]=v[1]p[1];”
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll v[10025],p[10025],dp[100025];
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++) cin>>v[i]>>p[i];
dp[v[1]]=v[1]*p[1];//为什么???????
for(int i=1;i<=m;i++)
{
for(int j=n;j>=v[i];j--)
{
dp[j]=max(dp[j],dp[j-v[i]]+v[i]*p[i]);
}
}
cout<<dp[n]<<endl;
return 0;
}
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll v[10025],p[10025],dp[100025];
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++) cin>>v[i]>>p[i];
//dp[v[1]]=v[1]*p[1] essential!!!
for(int i=1;i<=m;i++)
{
for(int j=n;j>=v[i];j--)
{
dp[j]=max(dp[j],dp[j-v[i]]+v[i]*p[i]);
}
}
cout<<dp[n]<<endl;
return 0;
}