例1-11 评测机队列

一、前置知识

例1-11 评测机队列

牛吃草问题

有一牧场,已知养牛(27)头,(6)天把草吃尽; 养牛(23)头,(9)天把草吃尽。如果养牛(21)头,那么几天能把牧场上的草吃尽呢?并且牧场上的草是不断生长的。

解法:把一头牛一天所吃的牧草看作(1),那么就有:
(1)(27)头牛(6)天所吃的牧草为:(27×6=162) (这(162)包括牧场原有的草和(6)天新长的草。)

(2)(23)头牛(9)天所吃的牧草为:(23×9=207) (这(207)包括牧场原有的草和(9)天新长的草。)

(3)(1)天新长的草为:((207-162)÷(9-6)=15)

(4)牧场上原有的草为:(27×6-15×6=72)

(5)每天新长的草足够(15)头牛吃,(21)头牛减去(15)头,剩下(6)头吃原牧场的草:(72÷(21-15)=72÷6=12)(天) ,所以养(21)头牛,(12)天才能把牧场上的草吃尽。

相关试题:
假设地球上的新生资源按恒定速度增长。照此测算,地球上现有资源加上新生资源可供110亿人生活90年,或供90亿人生活210年。为了能够实现可持续发展,避免资源枯竭,地球最多能够养活多少亿人?
(21090-11090)/(210-90)=75亿

二、本题分析

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

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

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

本题分析过程:

假设(1)台评测机(1min)可以评测出(1)份程序。

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;
}

原文链接: https://www.cnblogs.com/littlehb/p/14955305.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    例1-11 评测机队列

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/211821

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 上午12:58
下一篇 2023年2月13日 上午12:58

相关推荐