acgo题库
  • 首页
  • 题库
  • 题单
  • 竞赛
  • 讨论
  • 排行
  • 团队
  • 备赛专区

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
登录
注册
题目详情题解(0)讨论(0)提交记录(0)
  • 【官方题解】二分加排序

    【题目大意】 给你三个数字 n,m,kn,m,kn,m,k ,再给你两组长度为n的数组 a,ba,ba,b ,每过1天 ai=ai+bia_i=a_i+b_iai =ai +bi ,题目要求求出最少多少天数组 aaa 中有至少 mmm 个数据不小于 kkk ,输出这个天数,并且把不小于k分的总人数输出然后把这些人按照此时分数由高到低的排序方式输出他们编号,分数相同的人有限小编号。 【算法分析】 本题考查二分搜索、排序算法 我们不难发现有一个临界天数 xxx 使得对于 $ \forall d \ge x$ 都有 ai+bi×d≥ka_i + b_i \times d \ge kai +bi ×d≥k 的总人数不小于m,并且对于 $ \forall d < x$ 都有 ai+bi×d≥ka_i+b_i \times d \ge kai +bi ×d≥k 的总人数小于 mmm 。所以我们发现天数具有二段性,至此我们只需要二分来搜索最小可行天数即可。 然后我们记录并统计成绩超过k的同学再根据要求排序即可。 时间复杂度 O(nlogn) 。 【参考代码】

    userId_undefined

    重生之我是菜狗

    荣耀黄金
    34阅读
    0回复
    0点赞
  • 随便抄

    userId_undefined

    神奇的猫卷儿

    倔强青铜
    4阅读
    0回复
    1点赞
首页