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

· · 题解

太水了(那为什么写了20分钟

题意

t 分钟,每 w 分钟来 m 个人,可以第一或最后一分钟后来人,求一共可以来多少人。

思路

  1. 输入。
  2. 因为可以第一或最后一分钟后来人,所以要加 1 分钟。
  3. 循环 t 分钟,如果人数大于 m 人答案加上 m 人,则去 m 人,如果不足答案直接加上剩下的人。
  4. 输出答案。

    代码

    #include <bits/stdc++.h>
    #define N 10005
    using namespace std;
    int n, m, w, t;
    int main() {
    freopen("input.txt", "r", stdin);//要注释掉,防抄
    cin >> n >> m >> w >> t;
    t++;
    int l = 1, ans = 0;
    while (t >= 1) {
        l--, t--;
        if (l == 0) {
            if (n >= m) {
                ans += m;
                n -= m;
            } else {
                ans += n;
                n = 0;
            }
            l=w;//结束了加回来
        }
    }
    cout << ans << endl;//完结!!
    return 0;
    }

    求过!