杭电oj1009(贪心算法)

来源:互联网 发布:用什么软件做蹭饭地图 编辑:程序博客网 时间:2024/05/16 07:51
典型贪心算法的运用。
#include<stdio.h> #include<algorithm>#define For(i,m,n) for(i=m;i<n;i++)using namespace std;typedef struct room{double j,f;}room;room r[1005];//double rio[1005];bool cmp(const room &a,const room &b){return (a.j/a.f)>(b.j/b.f);}int main(){int n,i;double count,m;while(scanf("%lf%d",&m,&n)&&m!=-1&&n!=-1){count=0;For(i,0,n){scanf("%lf%lf",&r[i].j,&r[i].f);}sort(r,r+n,cmp);i=0;while(m>0&&i<n)//i<n是应该要注意的点,可能它是一只特别“有钱”的猫{if(m>r[i].f){m=m-r[i].f;count+=r[i].j;i++;}else{count+=m*(r[i].j/r[i].f); m=m-r[i].f;}}printf("%.3lf\n",count);}return 0;}

原创粉丝点击