• 例1-11 评测机队列


    问题:

    洛谷的评测任务是单位时间内均匀增加的。8台评测机30min可以刚好把评测队列中的程序评测完毕,10台评测机6min可以刚好把评测队列中的程序评测完毕。请问:几台评测机可以在10min时刚好把评测队列中的程序评测完毕?

    分析:
    著名的“牛吃草问题”的模型!

    特点:
    1、原来就有草。
    2、一边吃来一边长。
    3、先算时间长的,求是总量。
    4、再算时间短的,求出时间差范围内的增量。
    5、计算出增长速度。
    6、任选一组数据,根据时间 * 速度,得到这段时间内的增量。
    7、总量减增量得到原始量。
    8、再根据题目要求,计算出其它,比如给10分钟时间,需要多少台机器等等。

    本题分析过程:
    1、8台评测机30min可以评测30*8=240道试题。

    2、10台评测机6min可以评测10*6=60道试题。

    3、在30-6=24min内,增加了240-60=180道试题,增加的速度为 180/24=7.5道。

    4、在6min内,增长了 6 * 7.5=45 道,总数是60道,所以原来在开始前就有60-45=15道题。

    5、题目要求是10min内,就是10 * 7.5=75,再加了原始的试题量15,就是90个需要评测的试题。在10分钟内,就是需要9台评测机。

    C++代码

    #include <bits/stdc++.h>
    
    using namespace std;
    
    int main() {
        //题目给出的评测机数量和时间
        int n1 = 8, t1 = 30, n2 = 10, t2 = 6;
        int t3 = 10;    //题目要求的时间10分钟
        double inc_rate = (1.0 * n1 * t1 - n2 * t2) / (t1 - t2);//增长速度,注意1.0的用途
        double init_num = n2 * t2 - inc_rate * t2;//初始化队列长度
        double ans = (init_num + t3 * inc_rate) / t3;//求得答案
        cout << ans << endl;
        return 0;
    }
    
  • 相关阅读:
    linux 常用快捷键
    命令行远程链接
    mybatis参数错误 Parameter '×××' not found. Available parameters are [0, 1, param1, param2]
    mybatis延迟加载
    mybatis跨XML引用
    eclipse修改项目名称
    wait, WIFEXITED, WEXITSTATUS
    进程通信中如何进行值得传递?
    fork新建进程
    Ubuntu安装genymotion模拟器步骤
  • 原文地址:https://www.cnblogs.com/littlehb/p/14955305.html
Copyright © 2020-2023  润新知