当前位置: 首页 > news >正文

最少刷题数

最少刷题数

题目分析

对于每一名同学计算还需要再刷多少题才能保证刷题数比他多的人数不超过刷题数比他少的学生人数。我们可以考虑统计每一个分数的前缀和数组,sum[i]表示当前学生中,刷题数小于等于i的人数。那么对于学生i的刷题数a[i],sum[a[i]-1]表示刷题数比该同学少的人数,n-sum[a[i]]+1表示刷题数比该同学多的人数,这里的+1是因为减掉了该同学本身,所以要再加回来。我们可以通过sum[a[i]-1]与n-sum[a[i]]的大小来判断该学生是否需要再刷题。

如果sum[a[i]-1]>=n-sum[a[i]],说明该同学不需要再刷题,

如果sum[a[i]-1]<n-sum[a[i]],说明该同学需要再刷题,那么需要刷多少道题呢?我们只需要找到满足sum[x-1]>=n-sum[x]的最小的x就可以了。其实这个x是固定的,那么我们要怎么找这个x呢?就是遍历一遍sum数组即可。

寻找满足sum[pos-1]>=n-sum[pos]的最小的pos

for(int i = 1;i <= maxn;i++) {if(cnt[i-1]-1>=n-cnt[i]) {pos = i;break;}
}

遍历所有学生的刷题数,如果sum[a[i]-1]>=n-sum[a[i]],说明该同学不需要再刷题,打印0,否则打印当前刷题数和pos之间的差值。

for(int i = 1 ; i <= n ; i ++) {if(a[i]==0) System.out.print(pos-a[i] + " ");//注意刷题数为0时要特判不然会数组越界else {if(cnt[a[i]-1]>=n-cnt[a[i]]) System.out.print(0 + " ");elseSystem.out.print(pos-a[i] + " ");}
}

题目代码

import java.io.*;
public class Main {static final int N = 100000 ;public static void main(String[] args) throws IOException {StreamTokenizer in= new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));in.nextToken() ;int n = (int)in.nval ;int a[] = new int[n + 1] ;int cnt[] = new int[N + 1] ;int maxn = 0 ;for(int i = 1 ; i <= n ; i ++) {in.nextToken();a[i] = (int)in.nval ;cnt[a[i]] ++ ;maxn = Math.max(maxn , a[i]) ;}for(int i = 1 ; i <= maxn ; i ++) {cnt[i] += cnt[i - 1] ;}int pos = -1;for(int i = 1;i <= maxn;i++) {if(cnt[i-1]-1>=n-cnt[i]) {pos = i;break;}}for(int i = 1 ; i <= n ; i ++) {if(a[i]==0) System.out.print(pos-a[i] + " ");//注意刷题数为0时要特判不然会数组越界else {if(cnt[a[i]-1]>=n-cnt[a[i]]) System.out.print(0 + " ");elseSystem.out.print(pos-a[i] + " ");}}}
}
http://www.lryc.cn/news/317725.html

相关文章:

  • Python刘诗诗
  • 探索ChatGPT在软件架构师工作中的应用
  • pytest--allure报告中添加用例详情
  • 【深度学习笔记】9_5 多尺度目标检测
  • Linux--vim
  • FreeRTOS操作系统学习——中断管理
  • DHCP中继实验(思科)
  • 基于SpringBoot的“心灵治愈交流平台”的设计与实现(源码+数据库+文档+PPT)
  • 【SpringBoot】自定义工具类实现Excel数据新建表存入MySQL数据库
  • Retelling|Facebook1
  • 【2024-03-12】设计模式之模板模式的理解
  • Transformer模型引领NLP革新之路
  • 【Kotlin】运算符函数、解构函数、中缀函数
  • springboot268码头船只货柜管理系统
  • Java面试题11MySQL之执行计划到事务及慢查询
  • 算法时空复杂度分析:大O表示法
  • threejs简单创建一个几何体(一)
  • msfconsole数据库连接不了的问题【已解决】
  • 7. Linux进程环境
  • [linux] 静态图和动态图
  • 1.Spring核心功能梳理
  • 活动预告:如何培养高质量应用型医学人才?
  • 蓝桥杯算法错题记录-基础篇
  • Java知识点之单例模式
  • Flutter第三弹:常用的Widget
  • Dynamic Wallpaper v17.4 mac版 动态视频壁纸 兼容 M1/M2
  • Windows / Mac应用程序在Linux系统中的兼容性问题 解决方案
  • Net Core 使用Mongodb操作文件(上传,下载)
  • 适用于系统版本:CentOS 6/7/8的基线安全检测脚本
  • Seata源码流程图