【水?排序】10231 - 众数

【水·排序】10231 - 众数

Time Limit: 1000MS
Memory Limit: 32768KB

本题由南山鲍安其原创!在此感谢!

modes
【题目描述】
    在统计学中,将某个随机变量在实验中频数最高的取值称为“众数”。
    例如在数据{1,1,2,3,4,5}中,众数为1。
    需要注意的是,假如一组取值中有两个或两个以上取值的频数相同且最多,则他们都是众数。
    例如{1,1,2,2,3,4,5}中的众数为1、2。
    现在给你一组数据,请你输出这组数据的众数,以及众数的频数。
    为了免去没有众数的情况,我们将保证不是所有取值的频数都相同。

【输入格式】
    第一行,一个数N,表示数据的总数;
    第二行,N个整数Ci,为所有的取值。

【输出格式】
    第一行两个整数M、P,用空格分开,表示众数的个数及频数;
    以下M行,以升序输出各个众数。

【样例输入】
7
5 4 3 2 2 1 1

【样例输出】
2 2
1
2

【数据规模】
    对于30%的数据,保证N<=3,000
    对于100%的数据,保证N<=100,000,0<=Ci<MaxLongint。

Source
noip

 1 # include<stdio.h>
 2 # include<cstring>
 3 # include<iostream>
 4 # include<algorithm>
 5 using namespace std;
 6 const int maxn=200000+10;
 7 int num[maxn],dp[maxn][2];
 8 int main(){
 9     int n,cur=0,temp=-1,Max=-1,tot=0;cin>>n;
10     for(int i=1;i<=n;i++)cin>>num[i];
11     sort(num+1,num+n+1);
12     for(int i=1;i<=n;i++)
13     if(num[i]!=temp){dp[++cur][0]=num[i];dp[cur][1]=1;temp=num[i];}
14     else dp[cur][1]++;
15     for(int i=1;i<=cur;i++)Max=max(Max,dp[i][1]);
16     for(int i=1;i<=cur;i++)if(dp[i][1]==Max)tot++;
17     printf("%d %d\n",tot,Max);
18     for(int i=1;i<=cur;i++)if(dp[i][1]==Max)printf("%d\n",dp[i][0]);
19     return 0;
20 }
时间: 2024-10-07 19:09:39

【水?排序】10231 - 众数的相关文章

HDOJ 5131 Song Jiang&#39;s rank list 水

水排序 Song Jiang's rank list Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others) Total Submission(s): 71    Accepted Submission(s): 39 Problem Description <Shui Hu Zhuan>,also <Water Margin>was written by Shi Na

2018 Multi-University Training Contest 1 Solution

A - Maximum Multiple 题意:给出一个n 找x, y, z 使得$n = x + y +z$ 并且 $n \equiv 0 \pmod x, n \equiv 0 \pmod y, n \equiv 0 \pmod z$ 并且使得 $x \cdot y \cdot z$ 最大 思路:设$a = \frac{n}{x}, b = \frac{n}{y}, c = \frac{n}{z}$ 那么 $\frac{1}{a} + \frac{1}{b} + \frac{1}{c} =

HDU 1862 EXCEL排序 (排序水题)

Problem Description Excel可以对一组纪录按任意指定列排序.现请你编写程序实现类似功能. Input 测试输入包含若干测试用例.每个测试用例的第1行包含两个整数 N (<=100000) 和 C,其中 N 是纪录的条数,C 是指定排序的列号.以下有 N 行,每行包含一条学生纪录.每条学生纪录由学号(6位数字,同组测试中没有重复的学号).姓名(不超过8位且不包含空格的字符串).成绩(闭区间[0, 100]内的整数)组成,每个项目间用1个空格隔开.当读到 N=0 时,全部输入结

POJ 2388 Who&#39;s in the Middle(水~奇数个数排序求中位数)

题目链接:http://poj.org/problem?id=2388 题目大意: 奇数个数排序求中位数 解题思路:看代码吧! AC Code: 1 #include<stdio.h> 2 #include<algorithm> 3 using namespace std; 4 int main() 5 { 6 int n; 7 while(scanf("%d",&n)!=EOF) 8 { 9 int na[n+1]; 10 for(int i=0; i

CodeForces 22D Segments 排序水题

题目链接:点击打开链接 右端点升序,取右端点 暴力删边 #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #include <iostream> #include <map> #include <set> #include <math.h> using namespace std; #define inf 10

nyoj 95 众数问题【水】

众数问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数, 多重集合S重的重数最大的元素成为众数.例如:S={1,2,2,2,3,5},则多重集S的众数是2,其重数为3. 现在你的任务是:对于给定的由m个自然数组成的多重集S,计算出S的众数及其重数. 输入 第一行为n,表示测试数据组数.(n<30)每组测试的第一行是一个整数m,表示多重集S中元素的个数为m接下来的一行中给出

Poj 1094 拓扑排序 水题

Sad..这么水的题WA了无数发,题目要看仔细啊,留下来做个警告把 #include <cstdio> #include <cstring> #include <algorithm> #include <climits> #include <string> #include <iostream> #include <map> #include <cstdlib> #include <list> #i

蓝桥杯 算法训练 最小乘积(基本型) (水题,排序)

算法训练 最小乘积(基本型) 时间限制:1.0s   内存限制:512.0MB 问题描述 给两组数,各n个. 请调整每组数的排列顺序,使得两组数据相同下标元素对应相乘,然后相加的和最小.要求程序输出这个最小值. 例如两组数分别为:1 3 -5和-2 4 1 那么对应乘积取和的最小值应为: (-5) * 4 + 3 * (-2) + 1 * 1 = -25 输入格式 第一个行一个数T表示数据组数.后面每组数据,先读入一个n,接下来两行每行n个数,每个数的绝对值小于等于1000. n<=8,T<=

洛谷 试炼场 P1233 排队接水 (排序,贪心)

一道水题.... 链接:https://www.luogu.org/problem/show?pid=1223 题目描述 有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小. 输入输出格式 输入格式: 输入文件共两行,第一行为n:第二行分别表示第1个人到第n个人每人的接水时间T1,T2,-,Tn,每个数据之间有1个空格. 输出格式: 输出文件有两行,第一行为一种排队顺序,即1到n的一种排列:第二行为这种排列方案下的平均等待时