• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

Recommended Posts

题目描述

米尔科是一个伟大的密码破解。他知道世界上任何密码都可以通过频率分析破解。

但是他完全误解了频率分析是什么。

他截获了敌人发来的信息。这个信息由n个小于或等于c的数组成。

米尔科认为,频率分析包括对这个序列进行排序,使频率较高的数字出现在频率较低的数字之前。

给定任意两个数字x和y,如果x在原始序列中出现的次数比y多,则x出现在y之前。如果出现的次数相同,其值在输入中出现较早的那个应该出现在排序后的序列中的第一个。

请帮米尔科做一个“频率排序器”。

输入格式

第一行,两个正整数N,C,含义见题目描述。

第二行,n个正整数a_i,代表消息。

输出格式

第一行,n个正整数,代表排序后的序列。

说明/提示

数据规模及约定

对于100%数据,1N10 ^ 3,1C10 ^ 9,1 AI C。

输入输出样例

输入#1副本

5 2

2 1 2 1 2

输出#1副本

2 2 2 1 1

输入#2副本

9 3

1 3 3 3 2 2 2 1 1

输出#2副本

1 1 1 3 3 3 2 2 2

输入#3副本

9 77

11 33 11 77 54 11 25 25 33

输出#3副本

11 11 11 33 33 25 25 77 54

分析:

给定任意两个数字x和y,如果x在原始序列中出现的次数比y多,则x出现在y之前。如果出现的次数相同,其值在输入中出现较早的那个应该出现在排序后的序列中的第一个。

本主题可以使用排序和映射函数。map函数将每个数字的出现次数与第一个出现的位置相关联,sort根据对应的比较函数对原始序列进行排序。

代码

#包括iostream

#包含地图

#包含算法

使用命名空间std

mapint,intcounter,first

布尔cmp(int a,int b)

{

if(计数器[a]==计数器)

先返回[a]先;//如果出现次数相等,比较谁先出现。

返回计数器[a]计数器

}

int main()

{

int N,C,a[1005];

北卡罗来纳州CIN;

for(int I=1;I=N;我)

{

CIN a

反[a];//记录每个数字出现的次数

如果(!first[a])first[a]=I;//记录每个数字第一次出现的位置。

}

sort(a 1,a N 1,CMP);

for(int I=1;I=N;我)

{

cout a“”;

}

返回0;

}

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now