hdu1009FatMouse' Trade贪心结构体sort排

#include<cstdio>
#include<string>
#include<iostream>
#include<algorithm>
#include<stdlib.h>
using namespace std;
const int n=1005;
struct anode
{
	int j,f;
	double r;//不能直接算 
}node[n];
bool cmp(anode a1,anode b1)
{
	return a1.r>b1.r;
}
int main()
{
	int n,t;
	while(scanf("%d %d",&n,&t)!=EOF)
	{
		if(n==-1&&t==-1)break;
	for(int i=0;i<t;i++)
	{
		scanf("%d%d",&node[i].j,&node[i].f);
		node[i].r=(double)node[i].j/node[i].f; 
	}
	sort(node,node+t,cmp);
	double sum=0;
    for(int i=0;i<t;i++)
	{
		if(n>node[i].f)
		{
			sum+=node[i].j;
			n-=node[i].f;
		}
		else
		{
			sum+=(node[i].r*n);
			n=0;
			break;
		}
	}
	printf("%.3lf\n",sum);
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41568836/article/details/80368325