hdu2187悼念512汶川大地震遇难同胞——老人是真饿了(贪心 简单题)

传送门

简单题

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 struct node
 4 {
 5     double dan,weight;
 6 }a[1005];
 7 bool cmp(node x,node y)
 8 {
 9     return x.dan<y.dan;
10 }
11 void init()
12 {
13     for(int i=0;i<1005;i++)
14     {
15         a[i].dan=0.0;a[i].weight=0.0;
16     }
17 }
18 int main()
19 {
20     int c;
21     while(~scanf("%d",&c))
22     {
23         while(c--)
24         {
25             double n;int m;
26             scanf("%lf %d",&n,&m);
27             init();
28             for(int i=0;i<m;i++)
29             {
30                 scanf("%lf %lf",&a[i].dan,&a[i].weight);
31             }
32             sort(a,a+m,cmp);double ans=0;
33             for(int i=0;i<m;i++)
34             {
35                 if(n>0)
36                 {
37                     if(n>=a[i].dan*a[i].weight)
38                     {
39                         n-=a[i].dan*a[i].weight;
40                         ans=a[i].weight+ans;
41                     }
42                     else
43                     {
44                         ans=n/a[i].dan+ans;
45                         n=0;break;
46                     }
47                 }
48             }
49             printf("%.2lf\n",ans);
50         }
51     }
52     return 0;
53 }
View Code

 

转载于:https://www.cnblogs.com/fqfzs/p/9979381.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值