LuoguP7259 [COCI2009-2010#3] SORT 题解
Content
请编写一个“频率排序器”。输入一个
长度为 \(n\) 的数列 \(A=\{a_1,a_2,\dots,a_n\}\),要求:
- 按照每个数的出现次数降序排列。
- 如果两个数出现次数相同,则谁在数列中出现的位置靠前,排列之后那个书的位置也是靠前的。
数据范围:\(n\in[1,10^3],1\leqslant a_i\leqslant c\leqslant10^9\)。
Solution
我们开个 \(\texttt{map}\) 数组 \(vis\) 用来记录某个数是在数列中第几个出现的(如果某个数 \(x\) 没出现则 \(vis_x=0\)),然后再开个结构体存储:
- 这个数的值。
- 这个数最先出现的位置。
- 这个数出现的次数。
边输入就边记录以上信息。但有个例外,如果这个数第一次出现,则在结构体中新开一个元素,记录当前位置为最先出现的位置,出现次数为 \(1\),数的值为当前读入的数的值。
以上信息记录完以后我们就开始排序了,首先按照数的出现次数为第一关键字降序排列,如果次数相同,再按照最先出现的位置为第二关键字排序。排序完之后就可以输出了。
Code
struct node {
int fi, ti, num;
bool operator < (const node& tmp) const {
if(ti != tmp.ti) return ti > tmp.ti;
return fi < tmp.fi;
}
}a[1007];
map<int, int> vis;
int n, c, cnt, x[1007];
int main() {
n = Rint, c = Rint;
F(i, 1, n) {
x[i] = Rint;
if(!vis[x[i]]) {
a[++cnt] = (node){i, 1, x[i]};
vis[x[i]] = cnt;
} else a[vis[x[i]]].ti++;
}
sort(a + 1, a + cnt + 1);
F(i, 1, cnt) F(j, 1, a[i].ti) printf("%d ", a[i].num);
return 0;
}
LuoguP7259 [COCI2009-2010#3] SORT 题解的更多相关文章
- codechef Turbo Sort 题解
Input t – the number of numbers in list, then t lines follow [t <= 10^6]. Each line contains one ...
- JZOJ 5409 Fantasy & NOI 2010 超级钢琴 题解
其实早在 2020-12-26 的比赛我们就做过 5409. Fantasy 这可是紫题啊 题目大意 给你一个序列,求长度在 \([L,R]\) 区间内的 \(k\) 个连续子序列的最大和 题解 如此 ...
- HDU 1425 sort 题解
选择出数列中前k个最大的数. 这里由于数据特殊.所以能够使用hash表的方法: #include <cstdio> #include <algorithm> #include ...
- Hdoj 1425.sort 题解
Problem Description 给你n个整数,请按从大到小的顺序输出其中前m大的数. Input 每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含 ...
- Insertion Sort List Leetcode java
题目: Sort a linked list using insertion sort. 题解: Insertion Sort就是把一个一个元素往已排好序的list中插入的过程. 初始时,sorted ...
- 【leetcode刷题笔记】Insertion Sort List
Sort a linked list using insertion sort. 题解:实现链表的插入排序. 要注意的地方就是,处理链表插入的时候尽量往当前游标的后面插入,而不要往前面插入,后者非常麻 ...
- 算法与数据结构基础 - 排序(Sort)
排序基础 排序方法分两大类,一类是比较排序,快速排序(Quick Sort).归并排序(Merge Sort).插入排序(Insertion Sort).选择排序(Selection Sort).希尔 ...
- 830. String Sort
830. String Sort 题解 int alpha[256] = {0};//记录字符的次数 bool cmp(char a,char b) { if(alpha[a]==alpha[b])/ ...
- 【35.39%】【hdu 3333】Turing Tree
Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...
随机推荐
- Linux 使用wpa_supplicant手动配置连接wifi
Linux 使用wpa_supplicant手动配置连接wifi wpa_supplicant 简介 wpa_supplicant是Linux BSD, Mac OSX和Windows的WPA的服务, ...
- 洛谷 P3214 - [HNOI2011]卡农(线性 dp)
洛谷题面传送门 又是一道我不会的代码超短的题( 一开始想着用生成函数搞,结果怎么都搞不粗来/ll 首先不妨假设音阶之间存在顺序关系,最终答案除以 \(m!\) 即可. 本题个人认为一个比较亮的地方在于 ...
- 【Plink】Error: Multiple instances of '_' in sample ID.?
目录 前言 原因 解决方法 方法一:修改样本名 方法二:修改--id-delim 方法三:加入--double_id或--const-fid参数 前言 将vcf转化为plink格式时,命令如下: pl ...
- Jvarkit : Java utilities for Bioinformatics
Jvarkit : Java utilities for Bioinformatics :一个java写的生物信息工具包:http://lindenb.github.io/jvarkit/
- VMware和Centos的安装及配置
目录 1. 安装VMware 2. 安装CentOS6及配置 2.1 Centos安装 2.1.1 配置网络连接的三种形式 2.1.1.1 桥连接 2.1.1.2 NAT模式 2.1.1.3 主机模式 ...
- SpringBoot整合Shiro 三:整合Mybatis
搭建环境见: SpringBoot整合Shiro 一:搭建环境 shiro配置类见: SpringBoot整合Shiro 二:Shiro配置类 整合Mybatis 添加Maven依赖 mysql.dr ...
- Shell 打印空行的行号
目录 Shell 打印空行的行号 题解 Shell 打印空行的行号 写一个 bash脚本以输出一个文本文件 nowcoder.txt中空行的行号,可能连续,从1开始 示例: 假设 nowcoder.t ...
- HDFS【Namenode、SecondaryNamenode、Datanode】
目录 一. NameNode和SecondaryNameNode 1.NN和2NN 工作机制 2. NN和2NN中的fsimage.edits分析 3.checkpoint设置 4.namenode故 ...
- Shell学习(十)——du、df命令
一.du 命令 1.命令格式: du [选项][文件] 2.命令功能: 显示每个文件和目录的磁盘使用空间. 3.命令参数: -a或-all 显示目录中个别文件的大小. -b或-bytes 显示目录或文 ...
- Oracle数据库导入与导出方法简述
说明: 1.数据库数据导入导出方法有多种,可以通过exp/imp命令导入导出,也可以用第三方工具导出,如:PLSQL 2.如果熟悉命令,建议用exp/imp命令导入导出,避免第三方工具版本差异引起的问 ...