最少刷题数 c++ ####思路1.数组排序,求中位数的**下标**mid,mid必须满足mid左边数的个数要大于等于mid右边数的个数2.对于每一个ai,设修改后的ai为nx,依照题意,需要求最小的nx3.可以考虑nx与数组中位数的关系,若nx在中位数的右边, 题解列表 2024年04月08日 0 点赞 0 评论 700 浏览 评分:0.0
【前缀和+二分查找】 解题思路:一.定义sum数组用来存刷题数小于i的人数运用前缀和二.如果小于i题的人数小于大于i题的人数那么必须在刷i+1,max题里找,看看到底刷到多少题才能躺的人大于等于卷的人如果大于等于则不需要再刷了,值为0注意事项:参考代码:importjava.io.*;importjava.util.*;/ 题解列表 2024年02月07日 1 点赞 0 评论 786 浏览 评分:9.0
蓝桥杯2022年第十三届省赛真题-最少刷题数 importjava.util.Arrays;importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);//接收用户输入intn=sca 题解列表 2024年01月16日 0 点赞 0 评论 908 浏览 评分:9.9
nlogn(排序),前缀和解法蓝桥杯2022年第十三届省赛真题-最少刷题数, 解题思路:利用一个100000的数组存每个数字出现的次数,然后使用前缀和一次,计算出前缀和之后就能在O(1)的复杂度的时间内求出比当前小的数有几个,相等的有几个,大的有几个排序后找出中位数判断当前数是否符合刷题数,满足则输出0不满足则判断当前数到中位数是否符合题意, 题解列表 2023年04月04日 0 点赞 0 评论 731 浏览 评分:2.0
巧用中位数,通过small和big的关系进行分类讨论 解题思路:注意事项:参考代码:n=int(input())a=list(map(int,input().split()))b=[0]*len(a)d=sorted(a)mid=d[len(d)//2]big=0sml=0foriinrange(len(a)):if(a[i]>mid):big+=1if 题解列表 2023年03月17日 0 点赞 0 评论 655 浏览 评分:0.0
蓝桥杯做题笔记 最少刷题数xxx importjava.io.IOException;importjava.util.Arrays;importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args)throwsIOException{Scannersca 题解列表 2023年03月13日 0 点赞 0 评论 829 浏览 评分:2.0
前缀和 + 二分 #前缀和+二分先看测试数据范围10^5,暴力会TLE。先将每个人刷题的数量保存,并且更新最多刷题数量`sum[i]`来存放刷题数目不超过i个人数,因此可以得到公式比我卷的人`more=n-sum[nums[i]]`比我躺的人`less=sum[nums[i]-1]`当moreless也就是说卷过我的人 题解列表 2023年02月23日 0 点赞 0 评论 951 浏览 评分:9.4
最少刷题数 二分解法 摘要:~~ ### 来试试编辑一篇文章吧,祝您使用愉快! ~~~ /*本题的题意是任意的 a【i】+x,x>=0, 设a[i]+x==w, w属于【a【i】,1e5】,最大值是因为,0≤ai≤10…… 题解列表 2023年01月16日 0 点赞 0 评论 1262 浏览 评分:9.7
枚举-时间复杂度N 解题思路:就是枚举加上一个二分注意事项:参考代码:num=eval(input())list1=list(map(int,input().split()))list2=sorted(list1)result=[]#求中间数mid=(1+num)>>1midNum=list2[mid-1]#求左右两边的 题解列表 2023年01月10日 0 点赞 0 评论 1124 浏览 评分:9.9
蓝桥杯2022年第十三届省赛真题-最少刷题数(二分-java) 摘要:解题思路: 时间复杂度:O(N*log(max(A))*logN)二分找需要刷题数目a, 设已经刷了多少题为x,再二分找符合 < a + x - 1 与 > a + x + 1 的人数,根据题目要求比…… 题解列表 2022年10月14日 0 点赞 0 评论 1764 浏览 评分:8.4