Sweety

Practice makes perfect

导航

FatMouse' Trade

Posted on 2015-02-16 21:59  蓝空  阅读(166)  评论(0编辑  收藏  举报

题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=1009

本题作为贪心的基础题,很简单,并且本人认为结构体排序最形象直观,但是在做题的时候要注意0 1 和1 0 这两组测试数据,否则会WR


代码:

#include <iostream>
#include <string>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
struct T{
	int catfood,javabe;
	double unitprice;
}a[10005];
bool cmp(T a,T b){
	return a.unitprice>b.unitprice;
}
int main (){
	int m,n;
	while(~scanf("%d%d",&m,&n)&&!(m==-1&&n==-1)){
	//	if(m==-1||n==-1) break;
		double sum=0;
		if(n==0) printf("%.3lf\n",0);
		else{
	     	for(int i=0;i<n;i++){
		    	scanf("%d%d",&a[i].javabe,&a[i].catfood);
			    a[i].unitprice= double(a[i].javabe)/a[i].catfood;
	    	}
		   sort(a,a+n,cmp);	
	    	for(int i=0;m>0;i++){
            	if(a[i].catfood<=m)
        	     sum+=a[i].javabe,m-=a[i].catfood;
            	else
        	    	sum+=(double)m*a[i].unitprice,m=0;	   
		    }
	     printf("%.3lf\n",sum) ;
	  	}
	}
	return 0;
}