问题:
洛谷的评测任务是单位时间内均匀增加的。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;
}