1 条题解

  • 4
    @ 2025-1-10 12:58:24

    找一共有多少位战斗力不同的士兵 记为 nn

    将其中最大值记为 amaxa_max 如果amaxa_{max}只出现了一次,则答案为 amax+n1a_{max}+n-1

    else 答案为amax+na_{max}+n

    (原理请读者自己证明,试一直保留战斗力最大的士兵,直至只剩他一人,再一直操作1)

    此时,我们发现,只需找不同战斗力士兵的个数,最大值可以输入时动态解决;

    那么一般的高一生只能想到使用set(真是太屑了,而且CYC不会用set QWQ)

    但是它的时间复杂度是很大很大的O(logn),这对于这道题其实已经够了;

    但,当我们面对10^7 个士兵时,O(nlogn)就太慢——了

    此时 可以用 hash表 来解决 时间复杂度是O(1)

    那么 我们就以O(n)的时间复杂度AC了这道题

    • 1

    信息

    ID
    2239
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    40
    已通过
    11
    上传者