[GESP202403 四级] 做题

GESP编程共123题,本题是整站第1401题,已经有人完成了本题,加油!

题目描述

小杨同学为了提高自己的实力制定了做题计划,在第 k 天时,他必须要完成 k 道题,否则他就会偷懒。

小杨同学现在找到了一个题库,一共有 n 套题单,每一套题单中有一定数量的题目。但是他十分挑剔,每套题单他只会使用一次,每一天也只能使用一套题单里的题目,之后那套题单就会弃之不用。对于每套题单,他不必完成题单内所有的题。

那么问题来了,小杨同学最多做题几天才偷懒呢?

输入格式

第一行,一个整数为 n,表示有多少套题单。
第二行 n 个整数 a1​,a2​,…an​,分别表示每套题单有多少道题。

输出格式

输出一行一个整数表示答案。

输入输出样例

输入 #1

4
3 1 4 1

输出 #1

3

说明/提示

数据规模与约定

对全部的测试数据,保证 1≤n≤10^6,1≤ai​≤10^9。

别灰心,再试一次!

真题解析

【题目大意】

给定一个数列,每次选出一个数,要求选出的第k个数的数值大于等于k,直到无法选出。问最多能选出多少个数。

【考纲知识点】

基本运算、输入输出语句、排序算法、循环

【解题思路】

按题目要求定义好需要的变量,并实现输入

2.要尽可能多的选择,那么可以贪心地每次选出最小的数,看是否符号条件,不符合条件就跳过。

3.利用排序算法,从小到大排列,设置变量s,表示当前已经使用的元素下标,第j 天的时候,到数组中从s下标开始寻找,直到找到大于等于j的数组元素,将s更新为该元素的下标,答案加1。直到无法再进行这样的寻找。

4.输出答案

【参考程序】

本站题目仅供学习,GESP版权归CCF所有,如有侵权请联系删除。站长陈老师QQ及微信:208234。