
水题
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN = 5e3 + 10;
struct prc
{
int price, val;
}arr[MAXN];
bool cmp(prc a, prc b)
{
return a.price < b.price;
}
int main()
{
int sum , N, ans = 0;
cin>>sum>>N;
for(int i = 0; i < N; i++)
cin>>arr[i].price>>arr[i].val;
sort(arr, arr + N, cmp);
for(int i = 0; i < N; i++)
{
if(sum - arr[i].val >= 0)
{
ans += arr[i].val * arr[i].price;
sum -= arr[i].val;
}
else
{
ans += sum * arr[i].price;
goto l1;
}
}
l1:
cout<<ans<<endl;
return 0;
}
本文介绍了一种通过排序和遍历的方式找到在限定预算内能够购买的商品价值最大化的算法实现。该算法首先按商品价格对商品进行排序,然后依次选择价格最低的商品直到预算用尽,实现了预算范围内的利益最大化。
1万+

被折叠的 条评论
为什么被折叠?



