• C5-垃圾粉碎机


    题目描述

    垃圾分类快来了,垃圾场主某楠希望赶在垃圾分类之前将厂里的垃圾全部粉碎填埋。为此场长专门去租了n台垃圾粉碎机,每种垃圾粉碎机都有一个最长使用时间ti,在这段时间里总共可以处理mi吨垃圾,可以在任意时间使用任意时长,但是用完就不能再用。由于场里太穷,同一时间只能运行一台垃圾粉碎机,现在想问在垃圾分类来临之前,最多能粉碎多少垃圾。为了简化计算,所有时间单位以小时计算。

    输入

    前两个数为垃圾粉碎机的个数N和距离垃圾分类来临时间T小时

    接下来N行每行2个整数,对应的ti和mi

    所有数字均不大于1e5

    输出

    输出一行,能处理的垃圾最大重量,保留2位小数,单位为吨

    输入样例

    1 2
    2 3

    输出样例

    3.00
     

    代码- -

    标准贪心,可贪可贪了

    选出ti/mi最大的,每次就先把它用完

    如果装不下了,那就装一部分

    #include <iostream>
    #include <stdio.h>
    #include <algorithm>
    using namespace std;
    struct Goods
    {
        int v,w;
        double p;
    } g[100005];
    int cmp(struct Goods x,struct Goods y)
    {
        return x.p>y.p;
    }
    
    int main()
    {
            int N, V;
            double sum = 0;
    
            cin>>N>>V;
            for(int i = 0; i < N ; i++)
            {
                cin >>g[i].w >> g[i].v;
                g[i].p = (double)g[i].v / (double)g[i].w;
            }
            sort(g,g+N,cmp);
            for(int i = 0; i < N ; i++)
            {
                if(V >= g[i].w)
                {
                    V -= g[i].w;
                    sum += g[i].v;
                }
                else
                {
                    sum += (double)(V  * g[i].p);
                    break;
                }
            }
            printf("%.2lf
    ",sum);
        return 0;
    }
  • 相关阅读:
    文化课随笔
    微积分与无穷级数
    [康复计划]-数论基础
    [Codeforces]CF742(Div.2)A-E
    第一次个人编程作业的过程和想法
    第一次个人编程作业
    Python命令行参数及文件读出写入
    第一次个人编程作业
    第一次个人编程作业
    第一次博客作业
  • 原文地址:https://www.cnblogs.com/kubab119/p/11938722.html
Copyright © 2020-2023  润新知