1 条题解

  • 2
    @ 2024-4-28 13:45:33

    【题目大意】 给定一个 n,n 个整数,代表 n 套题,每一套题有一定数量的题目,小杨在第 k 天必须完成 k 道题,否则就偷懒,问小杨在偷懒前最多会做几天题?

    【考纲知识点】 排序、数组、模拟

    【解题思路】 先将 n 个数从小到大排序,第一重循环遍历每一天,利用一个变量 t 去遍历数组 n 套题,因为随着天数增大,每天做题数也逐渐增大,因此 t 只增不减。

    【参考程序】

    #include <bits/stdc++.h>
    using namespace std;
    const int N = 1e6 + 10;
    int n, a[N];
    int ans, t;
    int main()
    {
        cin >> n;
        for (int i = 0; i < n; i++)
            cin >> a[i];
        sort(a, a + n);
        for (int i = 1; i <= n; i++)
        {
            while (t < n)
            {
                if (a[t] >= i)
                {
                    ans++;
                    t++;
                    break;
                }
                t++;
            }
        }
        cout << ans;
        return 0;
    }
    
    • 1

    信息

    ID
    596
    时间
    1000ms
    内存
    512MiB
    难度
    8
    标签
    递交数
    1976
    已通过
    244
    上传者