题目的链接吃的有点饱,不是太想读题,大概的意思就是:一只fatmouse和一些cat交易bulabula的一堆1,其实就是买东西怎么买划算,这很显然啊,当然是单价越低的越划算喽,所以排序的规则就出来了。然后贪心的选取就好了。比较水就不再继续继续分析了,直接写代码。
#include"pch.h"
#include<iostream>
#include<algorithm>
#include<vector>
#pragma warning(disable:4996)
const int maxn = 1e6 + 10;
using namespace std;
struct food
{
int j, f;
}F[maxn];
bool cmpj(food&x, food&y)
{
return x.j*1.0/x.f > y.j*1.0/y.f;
}
int main()
{
int M, N;
food t;
while (scanf("%d%d", &M, &N))
{
double ans = 0;
if (M == -1 && N == -1)
{
break;
}
else
{
for (int i = 0; i < N; i++)
{
scanf("%d%d", &F[i].j, &F[i].f);
}
sort(F, F + N, cmpj);
for (int i = 0; i < N; i++)
{
if (M >= F[i].f)
{
M -= F[i].f;
ans += F[i].j;
}
else
{
double tem =M * 1.0/F[i].f;
ans += F[i].j*tem;
M = 0;
break;
}
}
}
printf("%0.3lf\n", ans);
}
return 0;
}