自从dd_engine老大《背包问题九讲》横空出世,背包问题的精髓基本已道尽。严重推荐。反正我是又老老实实读了一遍dd老大的文章的,大牛如此,榜样在先呀。
/*
ID: fairyroad
TASK: inflate
LANG: C++
*/
#include<fstream>
using namespace std;
ifstream fin("inflate.in");
ofstream fout("inflate.out");
int dp[10010];
int main()
{
int m, n; // total time, problem type
fin>>m>>n;
int s, t;
for(int i = 0; i < n; ++i)
{
fin>>s>>t;
for(int j = t; j <= m; ++j)
if(dp[j] < dp[j-t]+s) dp[j] = dp[j-t]+s;
}
fout<<dp[m]<<endl;
}