[COCI2009-2010#3] SORT
[COCI2009-2010#3] SORT
我们考虑记录一个数出现了多少次,但是由于值域太大,于是我们换一个方法,表示下标为 对应的这个数出现的次数为多少次,从当前这个数开始往后找,和它相等的话就加一,用 来表示。
如果一个数出现了多次,我们开一个值域大小的布尔型数组 对这个数打标记。显然,按照第一段的统计方法,对于一个数来说,我从他第一次出现去统计所得的值,就是这个数在区间里面的数量就是正确的。如果后面有数和他相同,我们就不用统计了,不然会记录到其他的出现次数中去,会出错。
然后我们用 表示出现次数最多的次数,从后往前枚举出现次数,同时我们从前往后扫一遍 数组,如果当前的 等于这个出现次数,就输出对应的 数组中的值。
#include<bits/stdc++.h>
using namespace std;
const int N =1e9+10;
const int INF=1e6+10;
bool vis[N];
int a[INF],s[INF];
int main()
{
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>a[i];
int maxx=-INT_MAX;
for(int i=1;i<=n;i++)
{
if(vis[a[i]]==true)
continue;
vis[a[i]]=true;
s[i]=1;
for(int j=i+1;j<=n;j++)
if(a[j]==a[i])
s[i]++;
maxx=max(maxx,s[i]);
}
for(int i=maxx;i>=1;i--)
{
for(int j=1;j<=n;j++)
if(s[j]==i)
{
for(int k=1;k<=i;k++)
cout<<a[j]<<" ";
}
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现