2 条题解

  • 0
    @ 2 周前

    #include #include #include using namespace std;

    int n, m; int v[25], p[25]; int f[30005];

    int main() { cin >> n >> m; for (int i = 1; i <= m; ++i) { cin >> v[i] >> p[i]; p[i] *= v[i]; }

    for (int i = 1; i <= m; ++i) {
        for (int j = n; j >= v[i]; --j) {
            f[j] = max(f[j], f[j - v[i]] + p[i]);
        }
    }
    
    cout << f[n] << endl;
    
    return 0;
    

    }

    • 0

      板子

      #include <iostream>
      #include <stack>
      #include <cmath>
      #include <vector>
      #include <string.h>
      #include <queue>
      #include <stdio.h>
      #include <iomanip>
      #include <cstdio>
      #include <algorithm>
      #define LL long long
      #define double long double
      using namespace std;
      const int N = 1e5 + 10;
      const int INF = 0x3f3f3f3f;
      int n, m, v[N], w[N], dp[N];
      signed main()
      {
      	cin >> n >> m;
      	for(int i = 1; i <= m; i++)
      	{
      		cin >> v[i] >> w[i];
      	}
      	for(int i = 1; i <= m; i++)
      	{
      		for(int j = n; j >= v[i]; j--)
      		{
      			dp[j] = max(dp[j], dp[j - v[i]] + v[i] * w[i]);
      		}
      	}
      	cout << dp[n] << endl;
      	return 0;
      }
      
      • 1

      信息

      ID
      685
      时间
      1000ms
      内存
      256MiB
      难度
      5
      标签
      递交数
      85
      已通过
      32
      上传者