贪心
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <iomanip>
using namespace std;
#define MAX 1000+10
struct Pie
{
double store;
double totalprice;
double price;
} pie[MAX];
int cmp(const void*a, const void *b)
{
return (*(Pie*)a).price < (*(Pie*)b).price?1:-1;
}
int main()
{
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
int n = 0, need = 0;
double total = 0;
cin >> n >> need;
for (int i = 0; i < n; i++)
cin >> pie[i].store;
for (int i = 0; i < n; i++)
{
cin >> pie[i].totalprice;
pie[i].price = pie[i].totalprice/pie[i].store;
}
qsort(pie, n, sizeof(pie[0]), cmp);
for (int i = 0; i < n; i++)
{
if (need - pie[i].store > 0)
{
total += pie[i].totalprice;
need -= pie[i].store;
}
else
{
total += need/pie[i].store * pie[i].totalprice;
break;
}
}
cout << setprecision(2) << fixed << total;
return 0;
}