[URAL 1100]Final Standings(排序技巧)
2009-08-29 18:08
260 查看
【题目描述】:
给你n(1<=n<=150000)组数,每组数有两个id和m(0<=m<=100),让你按照以m为关键字冒泡排序的顺序输出。
【题目分析】:
这个题的关键在于他要你按照冒泡排序的顺序输出。我们知道任意一个nlogn的排序算法都无法保证原数中的两个数相对位置不变。所以,就不能依靠快速排序等更快的排序算法来进行运算。
其实这个题的题眼在这:(0<=m<=100)
这让我们不得不想到桶排序。我们把这100种可能的情况记做一个个桶,然后我们来检验,进行桶排序。其实我们根本就可以按照降序来进行枚举m的值,然后将等于m的这组数输出出来,这样也就可以保证相对位置的不便。
这样反倒简单,代码仅14行。
复杂度O(100n)
【代码】:
给你n(1<=n<=150000)组数,每组数有两个id和m(0<=m<=100),让你按照以m为关键字冒泡排序的顺序输出。
【题目分析】:
这个题的关键在于他要你按照冒泡排序的顺序输出。我们知道任意一个nlogn的排序算法都无法保证原数中的两个数相对位置不变。所以,就不能依靠快速排序等更快的排序算法来进行运算。
其实这个题的题眼在这:(0<=m<=100)
这让我们不得不想到桶排序。我们把这100种可能的情况记做一个个桶,然后我们来检验,进行桶排序。其实我们根本就可以按照降序来进行枚举m的值,然后将等于m的这组数输出出来,这样也就可以保证相对位置的不便。
这样反倒简单,代码仅14行。
复杂度O(100n)
【代码】:
program URAL_1100; var id:array[1..150000] of longint; score:array[1..150000] of shortint; i,k,n:longint; begin readln(n); for i:=1 to n do readln(id[i],score[i]); for k:=100 downto 0 do for i:=1 to n do if score[i]=k then writeln(id[i],' ',k); end.
相关文章推荐
- URAL 1100. Final Standings (排序)
- ural1100--Final Standings--数据结构--结构体排序
- ural 1100. Final Standings(数据结构)
- Ural_1100. Final Standings(stable_sort)
- Ural 1100. Final Standings
- Ural 1100 Final Standings
- URAL 1100 Final Standings
- ural1100 Final Standings
- 【python】 sort、sorted高级排序技巧
- SQL进行排序、分组、统计的10个新技巧
- 表格排序技巧
- SQL进行排序、分组、统计的10个新技巧
- [ACM_模拟] UVA 10881 Piotr's Ants[蚂蚁移动 数组映射 排序技巧]
- SQL进行排序、分组、统计的10个新技巧
- 表格排序技巧
- Ext的开发技巧 - 从修改tree.panel的column的默认排序想到的
- PHP开发小技巧②—实现二维数组根据key进行排序
- GridView常用操作与技巧---格式化突出显示、增删改、排序、编号、换行、对话框、翻页、求和等
- 《算法艺术与信息学竞赛》之 排序与检索 二分 URAL 1184 电缆
- 【字符串排序,技巧!】UVa 10905 - Children’s Game