• CCF CSP 201503-2 数字排序 (map+自定义排序)


    题目链接:http://118.190.20.162/view.page?gpid=T26

    问题描述
    试题编号: 201503-2
    试题名称: 数字排序
    时间限制: 1.0s
    内存限制: 256.0MB
    问题描述:
    问题描述
      给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。
    输入格式
      输入的第一行包含一个整数n,表示给定数字的个数。
      第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所给定的整数。
    输出格式
      输出多行,每行包含两个整数,分别表示一个给定的整数和它出现的次数。按出现次数递减的顺序输出。如果两个整数出现的次数一样多,则先输出值较小的,然后输出值较大的。
    样例输入
    12
    5 2 3 3 1 3 4 2 5 2 3 5
    样例输出
    3 4
    2 3
    5 3
    1 1
    4 1
    评测用例规模与约定
      1 ≤ n ≤ 1000,给出的数都是不超过1000的非负整数。

    先统计每个数出现的次数,然后存入map,本来以为可以直接用map按照值的大小排序,但是好像自带的multimap只能是按照键大小排序,所以我先按照键的大小排序,然后再存入自定义的结构体中自定义排序即按照值的大小进行排序:

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <cmath> 
     4 #include <string>
     5 #include <cstring>
     6 #include <map> 
     7 using namespace std;
     8 int n,x;
     9 struct node
    10 {
    11     int x,y;
    12 }a[1005];
    13 bool cmp(node m,node n)
    14 {
    15     
    16     if(m.y==n.y) return m.x<n.x;
    17     return m.y>n.y;
    18 }
    19 int main()
    20 {
    21     while(cin>>n){
    22         multimap<int,int,greater<int> >mp;//按照键大小排序 
    23         map<int,int> ::iterator it;
    24         mp.clear();
    25         for(int i=0;i<n;i++){
    26             cin>>x;
    27             it=mp.find(x);
    28             if(it==mp.end()) mp.insert({x,1});
    29             else it->second++;
    30         }
    31         int t=0;
    32         for(it=mp.begin();it!=mp.end();it++){
    33             a[t].x=it->first;
    34             a[t].y=it->second;
    35             t++;
    36             //cout<<it->first<<" "<<it->second<<endl;
    37         } 
    38         //cout<<"================"<<endl;
    39         sort(a,a+t,cmp);
    40         for(int i=0;i<t;i++){
    41             cout<<a[i].x<<" "<<a[i].y<<endl;
    42         }
    43     }
    44     return 0;
    45 }
  • 相关阅读:
    内存映射和独立存贮器
    Elastic Stack简介和Elasticsearch--先搞清楚概念第二篇
    终于有人把Elasticsearch原理讲透了!学习的第一篇总览全局
    Java对象的序列化和反序列化
    java类里的成员变量是自身的对象问题
    Maven多模块的2种依赖管理策略
    双重检查锁单例模式为什么要用volatile关键字?
    Maven pom中的 scope 详解
    IntelliJ IDEA 内置数据库管理工具实战
    docker安装mysql5.7
  • 原文地址:https://www.cnblogs.com/wydxry/p/10731203.html
Copyright © 2020-2023  润新知