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) ...
随机推荐
- springboot项目中常遇到的问题-初学者最容易犯的错
1.在spring中有两个main方法 2.在idea中少提代码类了,或者某类中代码依赖关系没解决掉
- Date相关类
Date相关类 SimpleDateFormat类中format()和parse()方法 parse 字符串 --> 日期 format 日期 --> 字符串 Date类中getTime( ...
- 【GS基础】植物基因组选择研究人员及数量遗传学发展一览
目录 1.GS研究 2.数量遗传发展 GS应用主要在国外大型动物和种企,国内仍以学术为主.近期整理相关学术文献,了解到一些相关研究人员,记录下备忘查询,但不可能全面. 1.GS研究 Theo Meuw ...
- MYSQL5.8----M3
333333333333333333333333333 mysql> DESC user; +----------+---------------------+------+-----+---- ...
- R连接mysql数据库方法详解
Warning messages: 1: In odbcDriverConnect("DSN=Rdata;UID=root") : [RODBC] ERROR: state IM0 ...
- java中接口可以继承接口
今天阅读别人的代码才发现,接口是可以继承接口的 一个类只能extends一个父类,但可以implements多个接口. 一个接口则可以同时extends多个接口,却不能implements任何接口. ...
- 05 Windows安装python3.6.4+pycharm环境
windows安装python3.6.4环境 使用微信扫码关注微信公众号,并回复:"Python工具包",免费获取下载链接! 一.卸载python环境 卸载以下软件: 二.安装py ...
- day04 sersync实时同步和ssh服务
day04 sersync实时同步和ssh服务 sersync实时同步 1.什么是实时同步 实时同步是一种只要当前目录发生变化则会触发一个事件,事件触发后会将变化的目录同步至远程服务器. 2.为什么使 ...
- [php代码审计] Typecho 1.1 -反序列化Cookie数据进行前台Getshell
环境搭建 源码下载:https://github.com/typecho/typecho/archive/v1.1-15.5.12-beta.zip 下载后部署到web根目录,然后进行安装即可,其中注 ...
- Codeforces Round #754 (Div. 2) C. Dominant Character
题目:Problem - C - Codeforces 如代码,一共有七种情况,注意不要漏掉 "accabba" , "abbacca" 两种情况: 使用 ...