ACM_排序
除了sort,你还会什么
Time Limit: 1000/500ms (Java/Others)
Problem Description:
给出若干人的年龄(1~100之间的整数),把它们按照从小到大的顺序输出。
Input:
输入包含多组测试数据。每组数据的第一行为一整数 n,(0<n<=2 000 000),即居民总数;下一行输入 n 个整数,表示各居民的年龄。(输入文件约有20 MB,而内存限制只有2 MB,除了sort(),你还会什么...)
Output:
对于每一组数据,按照从小到大的顺序输出各居民的年龄。相邻年龄用空格隔开。
Sample Input:
3
56 56 56
5
99 91 89 63 91
Sample Output:
56 56 56
63 89 91 91 99
解题思路:题目中给出n的最大值为2*10^6,也就是直接调用sort函数的话,会超时,因为其时间复杂度是O(nlogn),但是给出的年龄范围只有1~100,相对n来说很小,也就是说我们可以利用一个数组来存相同年龄的人数,然后从1~100顺序遍历输出即可,注意要用C语言的输入输出,不然会超时!!!
AC代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,x,a[];
while(~scanf("%d",&n)){
memset(a,,sizeof(a));
for(int i=;i<=n;++i){
scanf("%d",&x);a[x]++;
}
for(int i=,m=;i<=;++i){
for(int j=;j<=a[i];++j){
++m;printf("%d%s",i,m<n?" ":"\n");
}
}
}
return ;
}
也可以使用优先队列:这里了解一下:priority_queue<Type, Container, Functional>Type为数据类型, Container为保存数据的容器,Functional为元素比较方式。如果不写后两个参数,那么容器默认用的是vector,比较方式默认用operator>,也就是优先队列是大顶堆,队头元素最大。
AC代码:注意输入输出要用C语言格式,不然真的会超时QAQ。。。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,x;
priority_queue<int,vector<int>,greater<int> > q;
while(~scanf("%d",&n)){
while(n--){scanf("%d",&x);q.push(x);}
while(q.size()>){
printf("%d ",q.top());q.pop();
}
printf("%d\n",q.top());q.pop();
}
return ;
}
ACM_排序的更多相关文章
- [ACM_模拟] UVA 10881 Piotr's Ants[蚂蚁移动 数组映射 排序技巧]
"One thing is for certain: there is no stopping them;the ants will soon be here. And I, for one ...
- [ACM_模拟] POJ 1094 Sorting It All Out (拓扑排序+Floyd算法 判断关系是否矛盾或统一)
Description An ascending sorted sequence of distinct values is one in which some form of a less-than ...
- ACM_小凯的排序(字符串)
小凯的排序 Time Limit: 2000/1000ms (Java/Others) Problem Description: 调皮的小凯喜欢排序,拿到什么东西都要排一下序.现在他觉得单一的递增递减 ...
- ACM_绝对值排序
Why Males And Females Apart? Time Limit: 2000/1000ms (Java/Others) Problem Description: In so many o ...
- javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...
- iOS可视化动态绘制八种排序过程
前面几篇博客都是关于排序的,在之前陆陆续续发布的博客中,我们先后介绍了冒泡排序.选择排序.插入排序.希尔排序.堆排序.归并排序以及快速排序.俗话说的好,做事儿要善始善终,本篇博客就算是对之前那几篇博客 ...
- JavaScript实现常用的排序算法
▓▓▓▓▓▓ 大致介绍 由于最近要考试复习,所以学习js的时间少了 -_-||,考试完还会继续的努力学习,这次用原生的JavaScript实现以前学习的常用的排序算法,有冒泡排序.快速排序.直接插入排 ...
- [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序
用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html 目录 马桶排序(令人 ...
- 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)
本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...
随机推荐
- ssh远程登录
ssh root@192.168.124.128 密钥登录: 1).ssh-keygen 生成公钥和私钥 [root@rhel5 ~]# ssh-keygen -t rsa Generating pu ...
- Jam's balance set 暴力
Jim has a balance and N weights. (1≤N≤20)(1≤N≤20) The balance can only tell whether things on differ ...
- Ajax核心知识(2)
对于Ajax核心的东西需要在进行总结提炼一下: xmlHttp对象. 方法:xml.responseText获取后台传递到前台的数据,经常性的使用var object=xml.responseText ...
- easyui datagrid-detailview 嵌套高度自适应
实现效果 原因 异步加载,明细展开时,可能会遇到父列表不能自动适应子列表高度的变化 具体代码 $('#centerdatagrid').datagrid({ url:'${ctx}/offer/off ...
- kill杀死进程方法
查找进程:ps -ef | grep firefox kill -s 9 1827
- epoll 的accept , read, write
http://www.ccvita.com/515.html 在一个非阻塞(fcntl)的socket上调用read/write函数, 返回EAGAIN或者EWOULDBLOCK(注: EAGAIN就 ...
- [Java Sprint] AutoWire
Previous we have seen constructore injection: https://www.cnblogs.com/Answer1215/p/9484872.html It w ...
- C# 如何修改Form不能修改窗体大小
把窗体的FormBorderSytle改一下就可以了,改成FixedSingle或者Fixed3D都可以
- MapReduce的Reduce side Join
1. 简单介绍 reduce side join是全部join中用时最长的一种join,可是这样的方法可以适用内连接.left外连接.right外连接.full外连接和反连接等全部的join方式.r ...
- 面试题之strcpy/strlen/strcat/strcmp的实现
阿里的电面要我用C/C++实现一个字符串拷贝的函数,虽然以前写过 strcpy 的函数实现,但时间过去很久了,再加上有点紧张,突然就措手不及了.最后写是写出来了,但没考虑异常的情况,面试官好像很不满意 ...