D - 数据结构实验之排序四:寻找大富翁
Description
2015胡润全球财富榜调查显示,个人资产在1000万以上的高净值人群达到200万人,假设给出N个人的个人资产值,请你快速找出排前M位的大富翁。
Input
首先输入两个正整数N( N ≤ 10^6)和M(M ≤ 10),其中N为总人数,M为需要找出的大富翁数目,接下来给出N个人的个人资产,以万元为单位,个人资产数字为正整数,数字间以空格分隔。
Output
一行数据,按降序输出资产排前M位的大富翁的个人资产值,数字间以空格分隔,行末不得有多余空格。
Sample
Input
6 3
12 6 56 23 188 60
Output
188 60 56
Hint
请用堆排序完成。
//优先队列实现
#include<bits/stdc++.h>using namespace std;int main()
{int n, m, t;priority_queue< int, vector<int>, greater<int> >q;scanf("%d%d", &n, &m);for(int i = 0; i < m; i++){scanf("%d", &t);q.push(t);}for(int i = 0; i < n - m; i++){scanf("%d", &t);if(t > q.top()){q.pop();q.push(t);}}stack<int> p;while(!q.empty()){p.push(q.top());q.pop();}while(!p.empty()){if(p.size() == 1)cout << p.top() << endl;elsecout << p.top() << " ";p.pop();}return 0;
}//一般方法
#include<bits/stdc++.h>using namespace std;int h[20];
int m;void shiftDown(int i)
{int t, flag = 0;while(2 * i <= m && flag == 0){if(h[i] > h[2 * i])t = 2 * i;elset = i;if(2 * i + 1 <= m){if(h[t] > h[2 * i + 1])t = 2 * i + 1;}if(t != i){swap(h[t], h[i]);i = t;}else flag = 1;}
}int main()
{ios::sync_with_stdio(0);int n, len;cin >> len >> m;for(int i = 1; i <= m; i++)cin >> h[i];for(int i = m / 2; i >= 1; i--)shiftDown(i);n = m;for(int i = m + 1; i <= len; i++){int k;cin >> k;if(k > h[1]){h[1] = k;for(int j = m / 2; j >= 1; j--)shiftDown(j);}}while(m > 1){swap(h[m], h[1]);m--;shiftDown(m);}for(int i = 1; i <= n; i++){printf("%d%c",h[i], i == n ? '\n' : ' ');}return 0;
}
D - 数据结构实验之排序四:寻找大富翁相关推荐
- 数据结构实验之排序四:寻找大富翁__咳咳咳,还魂篇!!
数据结构实验之排序四:寻找大富翁 Time Limit: 200MS Memory Limit: 512KB Submit Statistic Problem Description 2015胡润 ...
- 数据结构实验之排序四:寻找大富翁 SDUT
数据结构实验之排序四:寻找大富翁 SDUT Time Limit: 200 ms Memory Limit: 512 KiB Submit Statistic Problem Description ...
- 数据结构实验之排序四:寻找大富翁
题目描述 2015胡润全球财富榜调查显示,个人资产在1000万以上的高净值人群达到200万人,假设给出N个人的个人资产值,请你快速找出排前M位的大富翁. 输入 首先输入两个正整数N( N ≤ 10^6 ...
- SDUT OJ 数据结构实验之排序一:一趟快排
数据结构实验之排序一:一趟快排 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...
- SDUT_2119 数据结构实验之链表四:有序链表的归并
点击打开链接 数据结构实验之链表四:有序链表的归并 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem ...
- SDUT OJ 数据结构实验之链表四:有序链表的归并
数据结构实验之链表四:有序链表的归并 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Desc ...
- SDUT 3400 数据结构实验之排序三:bucket sort
数据结构实验之排序三:bucket sort Time Limit: 150MS Memory Limit: 65536KB Submit Statistic Problem Description ...
- 数据结构实验之栈四:括号匹配
数据结构实验之栈四:括号匹配 Description 给你一串字符,不超过50个字符,可能包括括号.数字.字母.标点符号.空格,你的任务是检查这一串字符中的( ) ,[ ],{ }是否匹配. Inp ...
- 数据结构实验之排序七:选课名单
数据结构实验之排序七:选课名单 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 随着学校规模 ...
最新文章
- 为机柜鸣冤:数据中心被忽视的重要设备
- 突然远程连接不上mysql_navicat突然连接不上远程linux服务器上的mysql
- excel vba 调用webbrowser_Python杀死Excel?我只会用Python来增强Excel!
- python实现dns劫持_Python程序之DNS劫持
- linux用户详细登录日志文件,Linux登录日志
- maven基础--IDEA集成
- android开启前台服务_Android 知识点必知之ANR与OOM
- [常微分方程的数值解法系列一] 常微分方程
- 密码攻略 黑客亲手打造QQ密码破解器(转)
- 对抗神经网络学习(简单的理解)
- gin html模板调用js函数
- SQL 遇到以零作除数错误——用NULLIF()函数处理为0的分母
- 2012年的Android之旅:梦想、学习、坚持、自信、淡定
- fastlane php,fastlane自动化打包ipa并发布到firim或者蒲公英
- 数影周报:小米汽车供应商被罚100万,1688延迟下线“1688买家旺旺”
- [ukulele]入门指南
- VBA遍历文件夹下的所有文件
- TDH添加自定义参数
- 解决Windows Explorer 奇怪的卡顿问题
- Java/eclipse新建项目TR51,编写程序计算各小组学生的平均成绩和总成绩,并计算所有学生的平均成绩
热门文章
- 关于后端java项目使用SpringBoot框架的报错总结
- 【LeetCode从零单排】No221.Maximal Square
- 【LeetCode从零单排】No14.LongestCommonPrefix
- Spring整合redis,通过sentinel进行主从切换。(何志雄)--转
- solr查询特殊字符的处理
- ibatis annotations 注解方式返回刚插入的自增长主键ID的值--转
- 当当网高可用架构之道--转
- 大战C100K之-Linux内核调优篇--转载
- 《Credit Risk Scorecard》第八章: Scorecard Implementation
- 深度机器学习中的batch的大小对学习效果有何影响?