java解杭电1009_杭电1009(FatMouse' Trade)

FatMouse' Trade

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 51740    Accepted Submission(s):

17347

Problem Description

FatMouse prepared M pounds of cat food, ready to trade

with the cats guarding the warehouse containing his favorite food,

JavaBean.

The warehouse has N rooms. The i-th room contains J[i] pounds of

JavaBeans and requires F[i] pounds of cat food. FatMouse does not have to trade

for all the JavaBeans in the room, instead, he may get J[i]* a% pounds of

JavaBeans if he pays F[i]* a% pounds of cat food. Here a is a real number. Now

he is assigning this homework to you: tell him the maximum amount of JavaBeans

he can obtain.

Input

The input consists of multiple test cases. Each test

case begins with a line containing two non-negative integers M and N. Then N

lines follow, each contains two non-negative integers J[i] and F[i]

respectively. The last test case is followed by two -1's. All integers are not

greater than 1000.

Output

For each test case, print in a single line a real

number accurate up to 3 decimal places, which is the maximum amount of JavaBeans

that FatMouse can obtain.

Sample Input

5 3

7 2

4 3

5 2

20 3

25 18

24 15

15 10

-1 -1

Sample Output

13.333

31.500

// 贪心,排序求最优解;

1 #include

2 #include

3 using namespacestd;4 structd5 {6 doublem,n;7 doublevalue;8 };9

10 d sum[100000];11

12 boolcmp(d m,d n)13 {14 return m.value>n.value;15 }16

17 intmain()18 {19 inta,b;20 while(~scanf("%d %d",&a,&b))21 {22 if(a==-1&&b==-1)23 break;24 inti;25 double total=0,c=0;26 for(i=0;i

32 sort(sum,sum+b,cmp);33

34 /*for(i=0;i=0)38 total+=sum[i].m;39 else40 break;41 }*/

42 for(i=0;isum[i].n)45 {46 total+=sum[i].m;47 a-=sum[i].n;48 }49 else

50 {51 c=1;52 total+=a*sum[i].value;53 }54 if(c!=0)55 break;56 }57 /*if(a<0)58 total+=(a+sum[i].n)*sum[i].value;59 */printf("%.3lf\n",total);60 }61 return 0;62 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值