/*
zoj_2109 贪心
简单贪心
*/
#include <iostream>
#include <cstdio>
#include <string.h>
#include <algorithm>
using namespace std;
struct node
{
double j,f,rate;
};
node trade[1010];
bool cmp( node a,node b )
{
return a.rate>b.rate;
}
int main()
{
int n,i;
double m,sum;
while( scanf( "%lf%d",&m,&n ) && !( m==-1 && n==-1 ) )
{
memset( trade,0,sizeof(trade) );
for( i=0;i<n;i++ )
{
scanf( "%lf%lf",&trade[i].j,&trade[i].f );
trade[i].rate=trade[i].j/trade[i].f;
}
sort( trade,trade+n,cmp );
sum=0;
for( i=0;i<n;i++ )
{
if( m<=0 ) break;
if( m>=trade[i].f )
{
m-=trade[i].f;
sum+=trade[i].j;
}
else
{
sum+=trade[i].rate*m;
break;
}
}
printf( "%.3lf\n",sum );
}
return 0;
}
zoj 2109
最新推荐文章于 2020-04-20 21:24:09 发布
本文详细介绍了如何使用贪心算法解决ZOJ平台上的2109题,通过实例分析了贪心策略在该问题中的应用,并提供了完整的代码实现。
开发板推荐:天空星STM32F407VET6开发板
超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印
开发板推荐:天空星STM32F407VET6开发板
超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印
319

被折叠的 条评论
为什么被折叠?



