#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <vector>
#include <string>
#include <map>
#include <set>
#include <queue>
#include <string.h>
#include <math.h>
#include <stack>
#include <ctype.h>
using namespace std;
int t,m;
int Time[105];
int value[105];
int dp[1006];
int main()
{
cin >> t >> m;
for( int i = 1; i <= m; i++ )
cin >> Time[i] >> value[i];
memset(dp, 0, sizeof(dp));
for(int i = 0; i <= t; i++ )
if( Time[1] <= i )
dp[i] = value[1];
for( int i = 2; i <= m; i++)
for(int j = t; j >= Time[i]; j--)
dp[j] = max(dp[j], dp[j-Time[i]] + value[i]);
cout << dp[t] << endl;
return 0;
}
动态规划 一维背包 采药
最新推荐文章于 2025-05-07 22:28:16 发布