日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

杭电1280java实现

發布時間:2025/3/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 杭电1280java实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前m大的數:
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
剛開始想用hashset卻發現里面有重復值。后來想用list,雖然能夠實現操作。但是一直超時,因為超內存,后來想了下,list每次增加的時候都會申請一個新的數組,如果數據過多肯定會爆內存,后來使用大數組粗存,每次只使用其中的前一部分,并且也支持排序只排前一部分,以前還沒見到過這張的處理,記錄下來。是對list和數組都增加了理解。
代碼如下:

import java.util.Arrays; import java.util.Scanner; public class 杭電1280 {static int a[]=new int[3002];public static void main(String[] args) {Scanner sc=new Scanner(System.in); int b[]=new int[5000000]; while(sc.hasNext()){int n=sc.nextInt();//數據個數int m=sc.nextInt();//前m大int number=0;for(int i=0;i<n;i ){a[i]=sc.nextInt();}for(int i=0;i<n;i ){for(int j=i 1;j<n;j ){b[number ]=(a[i] a[j]);}}Arrays.sort(b, 0, (n-1)*n/2);int x=number-1;for(int i=0;i<m;i ){if(i==m-1)System.out.println(b[x-i]);elseSystem.out.print(b[x-i] " ");}}} }

ps:注意輸出格式,空格和換行。

總結

以上是生活随笔為你收集整理的杭电1280java实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。