問題:
洛谷的評測任務是單位時間內均勻增加的。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;
}