HDU 3785 寻找大富翁(sort排序或优先队列)

题干:

 

浙江桐乡乌镇共有n个人,请找出该镇上的前m个大富翁.

Input输入包含多组测试用例. 
每个用例首先包含2个整数n(0<n<=100000)和m(0<m<=10),其中: n为镇上的人数,m为需要找出的大富翁数, 接下来一行输入镇上n个人的财富值. 
n和m同时为0时表示输入结束.Output请输出乌镇前m个大富翁的财产数,财产多的排前面,如果大富翁不足m个,则全部输出,每组输出占一行.Sample Input

3 1
2 5 -1
5 3
1 2 3 4 5
0 0

Sample Output

5
5 4 3

 

解题报告:水题,排序即可,优先队列亦可解。

 

 

排序ac:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;int a[100000+5];
int main()
{int n,m;while(~scanf("%d%d",&n,&m)) {if(n==0&&m==0) break;memset(a,0,sizeof(a));for(int i = 1; i<=n; i++) {scanf("%d",&a[i]);}sort(a+1,a+n+1, greater<int>() );if(n<=m) {for(int i = 1; i<=n; i++) {printf("%d%c",a[i],i==n?'\n':' '); }continue;}if(n>m) {for(int i = 1; i<= m; i++) {printf("%d%c",a[i],i==m?'\n':' '); }}}return 0 ;
}

事实证明不加if(n<=m)的情况 也能ac,看来是样例中没出这样的样例?不然依照题干应该是有这一种情况发生啊。

 

优先队列ac:

#include<cstdio>
#include<iostream>
#include<queue>
using namespace std;
priority_queue<int,vector<int>,less<int> >q;//等价于priority_queue<int> q;  从大到小排序 
int main()
{int n,t,a;while(scanf("%d %d",&n,&t)&&(n!=0||t!=0)){for(int i=0;i<n;i++){scanf("%d",&a);q.push(a);}for(int i=0;i<t-1;i++){printf("%d ",q.top());q.pop();}printf("%d",q.top());//最有一个数字没有空格。printf("\n");//每次别忘清空队列while(!q.empty())  q.pop();}return 0;
}
	int n,t,a;while(scanf("%d %d",&n,&t)&&(n!=0||t!=0)){for(int i=0;i<n;i++){scanf("%d",&a);q.push(a);}for(int i=0;i<t-1;i++){printf("%d ",q.top());q.pop();}printf("%d",q.top());//最有一个数字没有空格。printf("\n");//每次别忘清空队列while(!q.empty())  q.pop();}return 0;
}

优先队列ac2:(优化了n<=m的情况)源自网络

/*
当输入小于m个的时候,一直输入,当输入大于m个数之后 ,这m个数会按照从小到大的顺序排序,
再往里面输入的时候要进行判断,如果那个数比对顶元素大的话,这个数进队,对顶元素出对,
进队后就又变成从小到大排序了,输入完毕之后,将数据按从大到小输出,因为对顶元素是最小值,
所以,应该将元素 都重新赋值到数组中,然后从后往前输出!(就这个转换方法必须想到!!!)
*/
#include <stdio.h>
#include <queue>
#include <algorithm>
using namespace std;
priority_queue<int,vector<int>,greater<int> >q;
int a,b[100005];
int main() {int n,m,i,j,k;while(scanf("%d%d",&n,&m)&&(n||m)) { //n,m分别代表村中的总人数,和最富有的前m个人for(i=0; i<n; i++) { //将财产值放到队列中scanf("%d",&a);if(q.size()<m)q.push(a);else if(a>q.top()) {q.push(a);q.pop();}}if(n>m) { //当总人数比富翁人数多的话执行下面语句for(i=0; i<m; i++) {b[i]=q.top();q.pop();}for(i=m-1; i>0; i--)printf("%d ",b[i]);printf("%d\n",b[0]);} else { //总人数没有富翁人数多的话,执行这个下面的语句!for(i=0; i<n; i++) {b[i]=q.top();q.pop();}for(i=n-1; i>0; i--)printf("%d ",b[i]);printf("%d\n",b[0]);}}return 0;
}

今天又用set实现了一下,,第一发错了,后来发现需要multiset

AC代码:

#include<bits/stdc++.h>using namespace std;
multiset<int,greater<int> > ss;
int main()
{int n,m;while(~scanf("%d%d",&n,&m) ) {if(n+m == 0) break; ss.clear();int tmp;for(int i =1; i<=n; i++) {scanf("%d",&tmp);ss.insert(tmp);}int cnt = 0;set<int, greater<int> > :: iterator it; for(it = ss.begin(); it!=ss.end(); it++) {cnt++;printf("%d%c",*it,cnt==m?'\n':' ');if(cnt == m) break;}}return 0 ;
}

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442170.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

杭州软件测试培训有用吗,杭州软件测试培训靠谱吗

小白也能学会的模拟屏幕滑动与手势密码绘制 - 51Testing软件测试网小白也能学会的模拟屏幕滑动与手势密码绘制发表于&#xff1a;2019-8-13 13:32 作者&#xff1a;linux超 来源&#xff1a;博客园前言  App自动化测试中有两个很重要的操作&#xff0c;屏幕滑动与绘制手势…

priority_queue(优先队列)的简单构造与用法

priority_queuepriority_queue 优先队列&#xff0c;其底层是用堆来实现的。在优先队列中&#xff0c;队首元素一定是当前队列中优先级最高的那一个。在优先队列中&#xff0c;没有 front() 函数与 back() 函数&#xff0c;而只能通过 top() 函数来访问队首元素&#xff08;也可…

局域网服务器文件夹隐藏,局域网服务器共享文件夹访问权限设置win7隐藏无权限共享文件夹方法.docx...

局域网服务器共享文件夹访问权限设置win7隐藏无权限共享文件夹方法??局域网服务器共享文件夹访问权限设置、win7隐藏无权限共享文件夹的方法在局域网文件管理中&#xff0c;文件服务器共享文件的管理一直是当前网络管理的重要工作。尤其是很多单位的服务器共享文件常常是单位…

关于时间复杂度(持续更新.....)

数据范围小于100W的&#xff08;1e6&#xff09;&#xff0c;nlogn是1000w左右&#xff0c;可以卡时。 数据范围小于1000的&#xff0c;勉强可以o(n^2)。 数据范围1000W左右的(1e7)&#xff0c;只能考虑o(n)或者o(logn) 数据范围大于1000W的&#xff08;1e7&#xff09;&…

三星电视出现服务器未响应,三星电视遥控器失灵怎么办

feng1054592015-09-26 23:22解决办法一&#xff1a;(三星电视用户专用)1、检查遥控器到三星电视机接收位置中间是否有障碍物&#xff1b;2、在同一房间使用无线路由器、手机等设备的无线功能&#xff0c;可能会干扰红外信号的发送与接收&#xff1b;3、对遥控器进行复位操作&am…

sdut 2074 区间覆盖问题(贪心)

区间覆盖问题Time Limit: 1000MS Memory limit: 65536K题目描述用i来表示x坐标轴上坐标为[i-1&#xff0c;i]的长度为1的区间&#xff0c;并给出n&#xff08;1≤M≤200&#xff09;个不同的整数&#xff0c;表示n个这样的区间。现在要求画m条线段覆盖住所有的区间&#xff0c;…

http协议与服务器通信,iPhone应用用HTTP协议和服务器通信

iPhone应用用HTTP协议和服务器通信是本文要介绍的内容&#xff0c;主要是来学习iphone应用中的通信协议&#xff0c;具体内容来看本文详解。iPhone用http协议和服务器通信有两种方式&#xff0c;一种是同步一种是异步的&#xff0c;所谓同步是指当客户端调用post/get的方式的函…

[sicily]【1001】 会议安排(田忌赛马类贪心)

题干&#xff1a; N个会议要同时举行&#xff0c;参会人数分别为A[0], A[1], ...,A[N-1]. 现有M个会议室&#xff0c;会议室可容纳人数分别为B[0], B[1], ...,B[M-1]. 当A[i]<B[j]时&#xff0c;可以把会议i安排在会议室j&#xff0c;每间会议室最多安排一个会议&#xff0c…

设备怎样开启位置服务器,开启设备服务器

开启设备服务器 内容精选换一换购买Windows弹性云服务器后&#xff0c;通过MSTSC远程连接&#xff0c;发现没有声音。通过MSTSC远程连接的Windows弹性云服务器如何播放音频&#xff1f;本节内容适用于Windows Server 2008 R2、Windows Server 2016系统的弹性云服务器。Windows弹…

高端又易学的vbs表白程序了解一下

第一个、 打开txt文件&#xff0c;复制以下代码粘贴进去&#xff08;可以修改中文部分&#xff0c;其它代码不要动&#xff01;&#xff09;。保存并关闭txt文件。 msgbox("做我女朋友好吗&#xff1f;") msgbox("房产证上写你名字") msgbox("保大&qu…

离散化处理 模板

离散化模板&#xff1a; #include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int maxn100000; int a[maxn]; int b[maxn]; int n,m; void lisan(); int main() {cin>>n;//元素个数for(int i1;i<n;i) {scanf(&qu…

cf#401(Div. 2)B. Game of Credit Card(田忌赛马类贪心)

题干&#xff1a;After the fourth season Sherlock and Moriary have realized the whole foolishness of the battle between them and decided to continue their competitions in peaceful game of Credit Cards. Rules of this game are simple: each player bring his fa…

NYOJ-14 会场安排问题(经典贪心,区间完全不覆盖模板)

附另一&#xff1a;此类问题选题总结&#xff1a;https://blog.csdn.net/qq_41289920/article/details/81001357 题干&#xff1a; 会场安排问题时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;4描述学校的小礼堂每天都会有许多活动&#xff0c;有…

可以使用田忌赛马类贪心问题的前提(或说 如何判断题目符合田忌赛马类贪心问题)

前提就是&#xff0c;首先&#xff0c;需要两个数组&#xff01;&#xff01;两个数组&#xff01;&#xff01;两个数组&#xff01;&#xff01;才可以考虑这个&#xff01; 其次&#xff0c;A和B这两个数组的个数是相同的。也正因为如此&#xff0c;所以从大到小排序或者从小…

【nyoj 270】数的分解(统计因子模板)

题干&#xff1a; 数的分解时间限制&#xff1a;1000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;1描述你的任务是找到一个最小的正整数Q&#xff0c;使Q的各位数的乘积等于N。输入最多450组测试数据。数据以EOF结尾。输入一个整数N&#xff08;0 ≤ N ≤ 400)。输出…

asp.net mvc 地址栏传输信息报错:window.location.pathname

asp.net mvc 地址栏传输信息报错&#xff1a;window.location.pathname 前端cshtml代码内容 代码片. // 页面跳转 window.location.pathname /Home/Index?cc123;“/”应用程序中的服务器错误 从客户端(?)中检测到有潜在危险的 Request.Path 值。 如何解决 web.config中添…

区间覆盖全部类型及部分精选习题汇总详解(贪心策略)

内容如下&#xff1a; 1&#xff09;区间完全覆盖问题 问题描述&#xff1a;给定一个长度为m的区间&#xff0c;再给出n条线段的起点和终点&#xff08;注意这里是闭区间&#xff09;&#xff0c;求最少使用多少条线段可以将整个区间完全覆盖 样例&#xff1a; 区间长度8&#…

数据库提示:正在还原中,无法访问 应该怎么办?

Sql语句 restore database 数据库名 with recovery

数据库工具一段时间后打开报错:远程过程调用失败0x800706be

1.原因可能是安装vs时自带更高版本的sql server服务造成的&#xff0c;只需要卸载Microsoft SQL Server 2012 Express LocalDB或 Microsoft SQL Server 2012 LocalDB就行了 2.先安装vs工具&#xff0c;然后安装数据库工具

【POJ - 1328】Radar Installation(贪心+计算几何)安装雷达辐射岛屿

题干&#xff1a;Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. Each small island is a point locating in the sea side. And any radar installation, locating on the coasting, can only cover d distance, so …