1 条题解
-
0
自动搬运
来自洛谷,原作者为

gongziwen
[2022] CSP提高 二等奖 [2023] CSP提高 二等奖 [2024] CSP提高 二等奖搬运于
2025-08-24 23:05:31,当前版本为作者最后更新于2024-10-26 22:05:46,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
解法很简单,直接求众数即可。
很显然,每个怪兽尽量发挥自己活着的价值,即尽量干掉一个比他攻击值小的怪兽。
很显然,攻击值越大应该越晚被干掉。
我们按攻击力从大到小分层。
那么如果都不相等,那应该只会留下攻防最大的那个。
设第 层人数为 .
每一层都应该会留下 个怪兽。其实把这个值加起来就对了,但是还要解释一下为什么众数是对的。
我们发现是 这个值就是其差,否则为 .
我们直接令 ,那么就是求 数组大于零值的和,设 数组选出来大于零的的值为 集合(即 ,且 是极大的),那么 是严格单调上升的。
所以说答案为 ,即 ,又因 单调上升,所以 一定是 ,而 是极大的,所以即为 .
代码如下:
#include<bits/stdc++.h> const int N=1e5+6; int n,x,mp[N],ans; int main() { scanf("%d",&n); while(n--) { scanf("%d",&x); ans=std::max(ans,++mp[x]); } printf("%d\n",ans); return 0; }
- 1
信息
- ID
- 10926
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者