[ABC273C] (K+1)-th Largest Number

合理使用 C++ STL,在比赛中有利于减少失误,加快打题速度。这道题使用 STL map 很好做。

根据题意,我们先把数列去重观察。设数列构成大小为 M 的集合 S={S1,S2...,SM}

刚好有 K 个数比目标值大,其实就是说目标值在集合中是第 K+1 大的。

那么题目就变成了:输出 S 中第 K+1 大的数在数列中的个数。如果 K>M,输出 0 即可。这波和标题配合得很好啊。

考虑使用 map,其中第一关键字储存数值,第二关键字储存个数。 map 自带排序,所以不必再劳神排序了。

代码:

#include<bits/stdc++.h>
using namespace std;
int n,cnt;
map<int,int> m;
signed main(){
	scanf("%d",&n);
	for(int i=1,a;i<=n;i++){
		scanf("%d",&a);
		m[a]++;
	}
	map<int,int>::reverse_iterator it;
	for(it=m.rbegin();it!=m.rend();it++,cnt++)
		printf("%d\n",(*it).second);
	for(;cnt<n;cnt++)puts("0");
	return 0;
}

posted @   robinyqc  阅读(98)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示