1. 程式人生 > >(藍橋杯)2018JAVA B組 日誌分析

(藍橋杯)2018JAVA B組 日誌分析

順序輸出 輸入 lis ont 輸出格式 system i++ iterator 一個

日誌統計

小明維護著一個程序員論壇。現在他收集了一份"點贊"日誌,日誌共有N行。其中每一行的格式是:

ts id

表示在ts時刻編號id的帖子收到一個"贊"。

現在小明想統計有哪些帖子曾經是"熱帖"。如果一個帖子曾在任意一個長度為D的時間段內收到不少於K個贊,小明就認為這個帖子曾是"熱帖"。

具體來說,如果存在某個時刻T滿足該帖在[T, T+D)這段時間內(註意是左閉右開區間)收到不少於K個贊,該帖就曾是"熱帖"。

給定日誌,請你幫助小明統計出所有曾是"熱帖"的帖子編號。

【輸入格式】 第一行包含三個整數N、D和K。 以下N行每行一條日誌,包含兩個整數ts和id。

對於50%的數據,1 <= K <= N <= 1000

對於100%的數據,1 <= K <= N <= 100000
0 <= ts<= 100000 0 <= id <= 100000

【輸出格式】 按從小到大的順序輸出熱帖id。每個id一行。

【輸入樣例】

7 10 2
0 1
0 10
10 10
10 1
9 1
100 3
100 3

【輸出樣例】 1 3

資源約定: 峰值內存消耗(含虛擬機) < 256M CPU消耗 < 1000ms

請嚴格按要求輸出,不要畫蛇添足地打印類似:“請您輸入…” 的多余內容。

所有代碼放在同一個源文件中,調試通過後,拷貝提交該源碼。 不要使用package語句。不要使用jdk1.7及以上版本的特性。

主類的名字必須是:Main,否則按無效代碼處理。
思路:利用map將每個id的獲贊時間分類,通過循環獲贊時間查看此id是否為熱帖

 1 package a;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Arrays;
 5 import java.util.HashMap;
 6 import java.util.Iterator;
 7 import java.util.List;
 8 import java.util.Map;
 9 import java.util.Scanner;
10 
11 public
class test { 12 public static void main(String[] args) { 13 Scanner in = new Scanner(System.in); 14 int n = in.nextInt(); 15 int d = in.nextInt(); 16 int k = in.nextInt(); 17 // 通過id對獲贊時間分類 18 Map<Integer, String> map = new HashMap<Integer, String>(); 19 for(int i=0; i<n; i++) { 20 int ts = in.nextInt(); 21 int id = in.nextInt(); 22 map.put(id, map.getOrDefault(id, "")+","+ts); 23 } 24 // 熱帖id 25 List<Integer> host = new ArrayList<Integer>(); 26 // 對每個id進行處理 27 Iterator<Integer> iter = map.keySet().iterator(); 28 while(iter.hasNext()) { 29 int id = iter.next(); 30 // 將時間序列轉化為整數類型 31 String[] s = map.get(id).split(","); 32 int[] new_s = new int[s.length-1]; 33 for(int i=0; i<s.length-1; i++) { 34 new_s[i] = Integer.parseInt(s[i+1]); 35 } 36 // 由於得到的獲贊時間無序,首先進行排序 37 Arrays.sort(new_s); 38 // 進行判斷,i和j控制熱帖的獲贊數 39 for(int i=k-1, j=0; i<new_s.length; i++,j++) { 40 if(new_s[i]-new_s[j]<d && !host.contains(id)) { 41 host.add(id); 42 System.out.println(id); 43 } 44 } 45 46 } 47 in.close(); 48 } 49 }

(藍橋杯)2018JAVA B組 日誌分析