题解 | #签到题#

签到题

https://ac.nowcoder.com/acm/problem/292059

注意到难度的值域为 可以开一个cnt数组统计出每个难度的题目数量

由于需要选出 道题作为比赛,所以如果想要使得难度为 的题目作为签到题那么必须满足难度 的题目数量 ,那么可以从大到小枚举题目难度同时计算出难度 的题目数量之和,如果满足 则可以用该难度的题目数量 更新答案最大值。然后注意,答案不能超过 m。

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int a[N], cnt[N], sum[N];
int main() {
    int n, m;
    cin >> n >> m;
    for (int i = 1; i <= n; i ++) {
        cin >> a[i];
        cnt[a[i]] ++;
    }
    int ans = 0, sum = 0;
    for (int i = n; i >= 1; i --) {
        sum += cnt[i];
        if (sum >= m) ans = max(ans, cnt[i]);
    }
    ans = min(ans, m);
    cout << ans;
    return 0;
}
全部评论

相关推荐

2025-12-22 16:31
已编辑
桂林电子科技大学 Python
很奥的前端仔:如果你接了offer 临时又说不去 hr确实要多做一些工作。 当然如果是接offer之前当我没说
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务