asfeixue 2010-07-22 01:50:00
点我顶贴
收藏
删除
#include <iostream>
using namespace std;
int N,m;
typedef struct num
{
int p; //重要度
int v; //价格
};
int main()
{
cin>>N>>m;
num *M=new num[m];
for(int i=0;i<m;i++)
cin>>M[i].v>>M[i].p;
int opt[30001]={0};
for(int i=0;i<m;i++)
for(int j=N;j>=M[i].v;j--) //找到每一个单位价格上的最优性价比
if(opt[j-M[i].v]+M[i].p*M[i].v>opt[j])
opt[j]=opt[j-M[i].v]+M[i].p*M[i].v;
cout<<opt[N]<<endl;
return 0;
}
