您的位置:首页 > 其它

HDU 1009 - FatMouse' Trade

2011-11-10 12:09 253 查看
知识点:贪心算法
最简单的贪心:优先选择性价比高的。
#include <cstdio>
#include <cstdlib>

struct Cat
{
int J;
int F;
double per; //性价比
};

inline int cmp(const void *a,const void *b)
{
return ((Cat *)b)->per>((Cat *)a)->per ? 1 : -1;
}

bool scan_d(int &n) //整数输入外挂,减少时间
{
char i;
bool I=0;
i=getchar();
if(i==EOF) return 0;
while(i!='-'&&(i<'0'||i>'9'))
i=getchar();
if(i=='-') I=1,n=0;
else n=i-'0';
while(i=getchar(),i>='0'&&i<='9')
n=n*10+i-'0';
if(I) n=-n;
return 1;
}

int main()
{
int m,n;
while(scan_d(m),scan_d(n),m!=-1||n!=-1)
{
Cat cat
;
for(int i=0;i<n;i++)
{
scan_d(cat[i].J);
scan_d(cat[i].F);
cat[i].per=1.0*cat[i].J/cat[i].F;
}
qsort(cat,n,sizeof(Cat),cmp);
double sum=0;
for(int i=0;i<n;i++)
{
if(m<cat[i].F)
{
sum+=m*cat[i].per;
break;
}
else
{
sum+=cat[i].J;
m-=cat[i].F;
}
}
printf("%.3lf\n",sum);
}
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ini 算法