zoukankan      html  css  js  c++  java
  • HDOJ1280 前m大的数

    前m大的数

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


    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
     
    //因为题中说了最大的数不超过5000,所以可以用简单的hash映射
    #include<stdio.h>
    #include<string.h>
    
    int main()
    {
    	int n,m,i,j,flag,max;
    	int hash[10001],num[3001];
    	while(scanf("%d%d",&n,&m)!=EOF)
    	{
    		max=0;
    		memset(hash,0,sizeof(hash));
    		for(i=1;i<=n;++i)
    			scanf("%d",&num[i]);
    		for(i=1;i<n;++i)
    			for(j=i+1;j<=n;++j)
    			{
    				++hash[num[i]+num[j]];
    				if(max<num[i]+num[j])
    					max=num[i]+num[j];
    			}
    		flag=1;
    		for(i=max;i>0;--i)
    		{
    			if(m==0)
    			{
    				printf("\n");
    				break;
    			}
    			if(hash[i])
    			{
    				if(hash[i]<=m)
    				{
    					for(j=0;j<hash[i];++j)
    					{
    						if(flag)
    						{
    							printf("%d",i);
    							flag=0;
    						}
    						else
    							printf(" %d",i);
    					}
    					m-=hash[i];
    				}
    				else
    				{
    					while(m--)          //循环最后结果m=-1
    					{
    						if(flag)
    						{
    							printf("%d",i);
    							flag=0;
    						}
    						else
    							printf(" %d",i);
    					}
    					++m;
    				}
    			}
    		}
    	}
    	return 0;
    }
    
    功不成,身已退
  • 相关阅读:
    OpenDaylight及Postman实现VxLAN网络实验
    OpenDaylight的C/S模式实验
    OpenFlow1.3协议基于Mininet部署与验证
    Open vSwitch流表应用实战
    Open vSwitch的VxLAN隧道网络实验
    Open vSwitch的GRE隧道实验网络
    Open vSwitch使用案例扩展实验
    Beta 冲刺(1/7)
    福大软工 · 第十次作业
    福大软工 · BETA 版冲刺前准备(团队)
  • 原文地址:https://www.cnblogs.com/dongsheng/p/2647116.html
Copyright © 2011-2022 走看看