PTA月饼

一、题目描述

 

 二、解题思路

  这是个简答的贪心题,就直接按照平均价位从大到小排序,然后一直取就行了,直到所有的吨用完了。

三、代码实现

 1 #include "bits/stdc++.h"
 2 using namespace std;
 3 struct node{
 4     double num;
 5     double v;
 6     int w;
 7 }dd[1010];
 8 bool cmp(node a,node b)
 9 {
10     return a.v > b.v;
11 }
12 int main()
13 {
14     int m;
15     double tt;
16     double w;
17     cin >> m >> tt;
18     for(int i = 1;i <= m;i++)
19         cin >> dd[i].num;
20     for(int i = 1;i <= m;i++){
21         cin >> w;
22         dd[i].w = w;
23         dd[i].v = w / dd[i].num;
24     }
25     sort(dd + 1,dd + 1 + m,cmp);
26     double ans = 0;
27     for(int i = 1;i <= m;i++){
28         if(tt >  dd[i].num){
29             tt -= dd[i].num;
30             ans += dd[i].w;
31         }
32         else {
33             ans += dd[i].v * tt;
34             break;
35         }
36     }
37     cout << fixed << setprecision(2) << ans;
38     return 0;
39 }
posted @ 2022-03-19 16:13  scannerkk  阅读(35)  评论(0)    收藏  举报