#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n, v, ans;
struct node {
ll w;
ll c;
}bag[2000001];
bool cmp(node a, node b) {
return a.w * b.c > a.c * b.w;//乘法快
}
int main()
{
cin >> v >> n;
for (int i = 1; i <= n; i++) {
cin >> bag[i].w >> bag[i].c;
}
sort(bag + 1, bag + n + 1, cmp);
for (int i = 1; i <= n; i++)
if (v >= bag[i].c)v -= bag[i].c,ans += bag[i].w;
cout << ans;
return 0;
}
问题 J: 贪心背包
最新推荐文章于 2024-07-28 11:06:12 发布