题解 2673: 蓝桥杯2022年第十三届省赛真题-最少刷题数

来看看其他人写的题解吧!要先自己动手做才会有提高哦! 
返回题目 | 我来写题解

筛选

最少刷题数 c++

####思路1.数组排序,求中位数的**下标**mid,mid必须满足mid左边数的个数要大于等于mid右边数的个数2.对于每一个ai,设修改后的ai为nx,依照题意,需要求最小的nx3.可以考虑nx与数组中位数的关系,若nx在中位数的右边,

【前缀和+二分查找】

解题思路:一.定义sum数组用来存刷题数小于i的人数运用前缀和二.如果小于i题的人数小于大于i题的人数那么必须在刷i+1,max题里找,看看到底刷到多少题才能躺的人大于等于卷的人如果大于等于则不需要再刷了,值为0注意事项:参考代码:importjava.io.*;importjava.util.*;/

nlogn(排序),前缀和解法蓝桥杯2022年第十三届省赛真题-最少刷题数,

解题思路:利用一个100000的数组存每个数字出现的次数,然后使用前缀和一次,计算出前缀和之后就能在O(1)的复杂度的时间内求出比当前小的数有几个,相等的有几个,大的有几个排序后找出中位数判断当前数是否符合刷题数,满足则输出0不满足则判断当前数到中位数是否符合题意,

前缀和 + 二分

#前缀和+二分先看测试数据范围10^5,暴力会TLE。先将每个人刷题的数量保存,并且更新最多刷题数量`sum[i]`来存放刷题数目不超过i个人数,因此可以得到公式比我卷的人`more=n-sum[nums[i]]`比我躺的人`less=sum[nums[i]-1]`当moreless也就是说卷过我的人

最少刷题数 二分解法

摘要:~~ ### 来试试编辑一篇文章吧,祝您使用愉快! ~~~ /*本题的题意是任意的 a【i】+x,x>=0, 设a[i]+x==w, w属于【a【i】,1e5】,最大值是因为,0≤ai≤10……

枚举-时间复杂度N

解题思路:就是枚举加上一个二分注意事项:参考代码:num=eval(input())list1=list(map(int,input().split()))list2=sorted(list1)result=[]#求中间数mid=(1+num)>>1midNum=list2[mid-1]#求左右两边的