DOJ logoDOJ
题目
最近添加的题目收藏的题目Workbooks
分类DLC比赛小组团队讨论区
排名
解题数量排行榜连续解题排名DOJ Power 排行榜
评测状态
征题登录注册
DOJ logoDOJ

支持 OI 子任务计分、Elo 等级分和 Discord 认证的社区在线评测系统。

题目
题目列表分类
社区
比赛排名讨论区公告举办外部比赛指南
账号
登录注册评测状态
政策
服务条款DLC 使用规则隐私政策API 文档语言运行环境比赛排名奖励评级与表现
© 2026 DOJ
保留所有权利
题解

생일 멘션이 너무 많아

返回题目

题解

  • 평균은 정수 나눗셈으로 구합니다. 평균이 MMM보다 크면 −1-1−1을 출력합니다.
  • 평균이 MMM 이하이면, 평균 이하로 멘션을 보낸 사람은 멘션이 MMM번 이하라서 메시지가 겹치지 않습니다.
  • 111번 메시지는 모든 사람에게 가므로 NNN번 보냅니다.
  • iii번 메시지(i≥2i \ge 2i≥2)는 멘션 횟수가 iii 이상이고 평균 이하인 사람에게 한 번씩 갑니다.
  • 멘션 횟수가 평균 이하인 사람을 횟수별로 센 뒤, MMM부터 거꾸로 누적합을 구하면 iii번 이상 보낸 사람 수가 나옵니다.
  • 사람을 한 번 훑는 데 O(N)\mathcal{O}(N)O(N), 누적합에 O(M)\mathcal{O}(M)O(M)이 들어 시간복잡도는 O(N+M)\mathcal{O}(N+M)O(N+M)입니다.
  • 정렬한 뒤 이분탐색을 써도 됩니다.
    • 222번 이상 멘션을 보낸 사람의 수를 이분탐색 111번으로 구합니다.
    • 평균이 정렬된 배열의 어디에 오는지 이분탐색 111번으로 찾습니다.
    • iii번 이상 멘션을 보낸 사람 중 평균 이하인 사람의 수를 iii마다 이분탐색으로 구합니다(MMM번).
    • 이 풀이의 시간복잡도는 입니다.
O((N+M)log⁡N)\mathcal{O}((N+M)\log N)
O((N+M)logN)