开心的金明
DP题,代码:
#include<bits/stdc++.h> using namespace std; int dp[110000]; int a[1100000],b[1100000]; int n,m; int main() { cin>>n>>m; for(int i=1;i<=m;i++) { cin>>a[i]>>b[i]; b[i]=a[i]*b[i];//因为是乘法 } for(int i=1;i<=m;i++) { for(int j=n;j>=a[i];j--)//从总和开始,避免重复 { if(j>=a[i]) dp[j]=max(dp[j-a[i]]+b[i],dp[j]);//比较 } } cout<<dp[n]; }