跟上一篇一样,01背包
可是我错了两次
一次RE : 没看清楚题目,30000个不是3000
一次TLE :死循环,没有while( cin >> ... )
// Problem#: 1342
// Submission#: 1250027
// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
// URI: http://creativecommons.org/licenses/by-nc-sa/3.0/
// All Copyright reserved by Informatic Lab of Sun Yat-sen University
#include <iostream>
using namespace std;
int ma[ 30010 ];
int main()
{
int N, size;
int i, m;
int v, p;
int product;
while( cin >> N >> size )
{
for( i = 0; i <= N; i++ )
ma[ i ] = 0;
for( i = 0; i < size; i++ )
{
cin >> v >> p;
product = v * p;
for( m = N; m >= 0; m-- )
{
if( m >= v ){
if( ma[ m ] < ma[ m - v ] + product )
ma[ m ] = ma[ m - v ] + product;
}
}
}
cout << ma[ N ] << endl;
}
return 0;
}