前m大的数

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7945    Accepted Submission(s): 2831

Problem Description
还记得Gardon给小希布置的那个作业么?(上次比赛的1005)其实小希已经找回了原来的那张数表,现在她想确认一下她的答案是否正确,但是整个的答案是很庞大的表,小希只想让你把答案中最大的M个数告诉她就可以了。
给定一个包含N(N<=3000)个正整数的序列,每个数不超过5000,对它们两两相加得到的N*(N-1)/2个和,求出其中前M大的数(M<=1000)并按从大到小的顺序排列。
 
Input
输入可能包含多组数据,其中每组数据包括两行: 第一行两个数N和M,
第二行N个数,表示该序列。
 
Output
对于输入的每组数据,输出M个数,表示结果。输出应当按照从大到小的顺序排列。
 
Sample Input
4 4
1 2 3 4
4 5
5 3 6 4
 
Sample Output
7 6 5 5
11 10 9 9 8
 
#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std; int a[];//少了个0,WA了N次。。。。。悲剧 bool compare(int a,int b)
{
return a>b; //从大到小,降序序排列
}
int main()
{
int b[];
int x,y,i,j,t,m;
while(scanf("%d%d",&x,&y)!=EOF)
{
memset(b,,sizeof(b));
memset(a,,sizeof(a));
m=x*(x-)/;
for(i=;i<x;i++)
scanf("%d",&b[i]);
t=;
for(i=;i<x-;i++)
for(j=i+;j<x;j++)
a[t++]=b[i]+b[j];
sort(a,a+m,compare);
for(i=;i<y-;i++)
printf("%d ",a[i]);
printf("%d\n",a[i]); }
return ;
} /*
# include<stdio.h>
# include<string> int main()
{
int n,m,i,j,hash[10001],a[3001],flag;
while(scanf("%d%d",&n,&m)==2)
{
flag = 1;
memset(hash,0,sizeof(hash));
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
hash[a[i]+a[j]]++;
for(i=10000;i>=0;i--)
{
while(hash[i]--)
{
if(flag)
{
printf("%d",i);
flag = 0;
}
else
printf(" %d",i);
m--;
if(!m)
break;
}
if(!m)
break;
}
printf("\n");
}
return 0;
}*/

第一种方法比较直接,但是用时更多,所以推荐用第二种方法,简洁明了!!!

前m大的数(hdu1280)的更多相关文章

  1. 【hdu1280】前M大的数

    前m大的数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  2. HDU1280前m大的数creat at 9:51,3.13,2016

    前m大的数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  3. hdu1280 前m大的数(数组下标排序)

    前m大的数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  4. hdu---(1280)前m大的数(计数排序)

    前m大的数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  5. 找出数组前N大的数

    这个题也是个比较有名的面试题.当然有很多变种. 题目意思基本是:从一个数据量很大的数组里找前N大的元素.不允许排序. 这个题有两个比较好的思路: 思路一:用快速排序的思想,是思想,不是要排序; 思路二 ...

  6. HDU 1280 前m大的数

    http://acm.hdu.edu.cn/showproblem.php?pid=1280 前m大的数 Time Limit: 2000/1000 MS (Java/Others) Memory L ...

  7. 输出前n大的数(分治)

    描述:给定一个数组包含n个元素,统计前m大的数并且把这m个数从大到小输 出. 输入: 第一行包含一个整数n,表示数组的大小.n < 100000.第二行包含n个整数,表示数组的元素,整数之间以一 ...

  8. 4J - 前m大的数

    还记得Gardon给小希布置的那个作业么?(上次比赛的1005)其实小希已经找回了原来的那张数表,现在她想确认一下她的答案是否正确,但是整个的答案是很庞大的表,小希只想让你把答案中最大的M个数告诉她就 ...

  9. 7617:输出前k大的数

    7617:输出前k大的数 查看 提交 统计 提问 总时间限制: 10000ms 单个测试点时间限制: 1000ms 内存限制: 65536kB 描述 给定一个数组,统计前k大的数并且把这k个数从大到小 ...

随机推荐

  1. ZKWeb网页框架1.5正式发布

    本次更新的内容有 明显的改进了IoC容器在部分情况下的性能, 当前的性能和Grace, DryIoC同等 添加IHttpResquestHandlerWrapper接口让重载Http上下文更容易 添加 ...

  2. 【UOJ244】 【UER #7】短路(贪心)

    传送门 uoj Solution 简单题? 考虑一条路径长什么样子,一定是经过某一个字母环的左上角,那么答案就很简单了. 我们记一个前缀最小值,这样子让他一路走下去一定是最优! 然后扫一遍就好了. 代 ...

  3. 微信小程序如何跳转到另一个小程序

    微信小程序如何跳转到另一个小程序,要注意:在app.json文件里也要配置 navigateToMiniProgramAppIdList,如下图: "navigateToMiniProgra ...

  4. iOS-项目开发1

    FFPageControl 由于UIPageControl不能设置图片,而在实际开发中又经常遇到需要使用图片的情况,故仿照系统UIPageControl,重写了FFPageControl,以支持图片的 ...

  5. 解决linux下source /etc/profile关闭终端失效问题

    本来想配置环境变量的,看网上和博客上很多说改/etc/profile,然后source /etc/profile之后就可以永久保存使环境变量生效,但是终端一关闭,就环境变量就失效了,其他终端也用不了. ...

  6. To B运营和To C运营到底有什么区别?

    无论To B还是To C运营其本质都是从目标用户转化为付费用户实现产品的变现,但是两者之间仍然存在一定的区别. 单纯从概念上来说,To B和To C的区别主要是从电商兴起的,并随着互联网的快速发展,T ...

  7. LaTeX技巧:如何高效地将LaTeX代码转为Word公式

    LaTeX转换为word这么刺激的做法是很多国内用户咨询的问题,有些用户只得把LaTeX排版好的转换为word,这里给大家推荐几个用法,或许能够帮助到诸位. 第一种方法:MathType的Toggle ...

  8. git中多账号切换问题的解决方案(转)

    作者:知乎用户链接:https://www.zhihu.com/question/23028445/answer/416231632来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  9. (转载)Centos下Elasticsearch安装详细教程

    原文地址:http://www.cnblogs.com/sunny1009/articles/7874251.html Centos下Elasticsearch安装详细教程 1.Elasticsear ...

  10. Evenbus简单用法

    Evenbus是一个开源插件,可以帮我们在app里面进行数据传递,传递的对象为Object,就是说可以传输任何对象,但是一般为了拓展性和维护性,我们都用来传输Bean类型. 这个插件最重要的是注册和反 ...