题解:P15040 [UOI 2022 II Stage] 竞赛

· · 题解

这道题非常的水,但是**写了20分钟,我也不知道为什么
进入正题
这道题的意思就是说,有 n 个人在竞赛开始的前 t 分钟来到了这里,但是每 w 分钟只能进入 m 个人,并且只要竞赛没有开始,人就可以一直进(比如,在第 0 分钟,也就是竞赛刚刚开始,这 m 个人还是可以进入),而我们就需要求出能进多少个人。

那么我们就可以先用一个while循环,只要时间不为零,人就可以一直进,最后再输出答案。

但…………

这么做只能得到80分。

因为有一种可能是,来的人很少,时间却很长,这样一来,答案就会大于来的人,所以最后输出答案的时候需要取答案和 n 的最小值。

代码

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n, m, w, t, cnt = 0;
    cin >> n >> m >> w >> t;
    int n1 = n;
    while ( t >= 0 ){
        n -= m; t -= w;
        cnt ++;
    }
    cout << min(cnt * m, n1);
    return 0;
}