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。