1 条题解
-
4
找一共有多少位战斗力不同的士兵 记为
将其中最大值记为 如果只出现了一次,则答案为
else 答案为
(原理请读者自己证明,试一直保留战斗力最大的士兵,直至只剩他一人,再一直操作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
- 上传者