当前位置:网站首页>Haut OJ 1350: choice sends candy

Haut OJ 1350: choice sends candy

2022-07-05 05:17:00 hunziHang

Problem description :

Christmas is coming ,Choice Prepare to send some candy as a gift , Yes n Grow candy , Each kind of candy has mi individual , The price of candy is pi(pi yes mi The total price of candies ), Each kind of candy can be broken into any one to take away , however Choice At most w A candy , Of course Choice Not a stingy person , She takes expensive candy as much as possible , Excuse me, Choice What value candy can you take away at most ?


Cause analysis :

for Inside i ,sort Inside n  Can't be decimal , It can't be defined as double etc.


Solution :

#include<bits/stdc++.h>
using namespace std;
#define endl "\n"
typedef struct tg{
    double tp,num,p;
}T;
bool cmp(T a,T b)
{
    return a.p>b.p;
}
int main(void)
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n;
    double w;
    while(cin>>n>>w)
    {
      T a[1005];
      int i,j;
      double sum=0,count;

     for(i=0;i<n;i++)
     {
         cin>>a[i].tp>>a[i].num;
         a[i].p=a[i].tp/a[i].num;
     }
     sort(a,a+n,cmp);
     for(i=0;i<n;i++)
     {
        if(w>0)
        {
           count=min(a[i].num,w);
           sum+=a[i].p*count;
           w-=count;
        }
        else
            break;
     }
     cout<<fixed<<setprecision(1)<<sum<<endl;
    }


    return 0;
}

原网站

版权声明
本文为[hunziHang]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202140622509390.html