2018蓝桥杯省赛---java---B---8(日志统计)
生活随笔
收集整理的這篇文章主要介紹了
2018蓝桥杯省赛---java---B---8(日志统计)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目描述
小明維護著一個程序員論壇。現(xiàn)在他收集了一份"點贊"日志,日志共有N行。其中每一行的格式是: ts id 表示在ts時刻編號id的帖子收到一個"贊"。 現(xiàn)在小明想統(tǒng)計有哪些帖子曾經(jīng)是"熱帖"。如果一個帖子曾在任意一個長度為D的時間段內(nèi)收到不少于K個贊,小明就認為這個帖子曾是"熱帖"。 具體來說,如果存在某個時刻T滿足該帖在[T, T+D)這段時間內(nèi)(注意是左閉右開區(qū)間)收到不少于K個贊,該帖就曾是"熱帖"。 給定日志,請你幫助小明統(tǒng)計出所有曾是"熱帖"的帖子編號。 【輸入格式】 第一行包含三個整數(shù)N、D和K。 以下N行每行一條日志,包含兩個整數(shù)ts和id。 對于50%的數(shù)據(jù),1 <= K <= N <= 1000 對于100%的數(shù)據(jù),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 資源約定: 峰值內(nèi)存消耗(含虛擬機) < 256M CPU消耗 < 1000ms思路分析
Map的key保存編號,value就用ArrayList保存
代碼實現(xiàn)
package lanqiao;import java.util.*; public class Main{public static void main(String[] args) {Scanner sc=new Scanner(System.in);int N=sc.nextInt();int D=sc.nextInt();int K=sc.nextInt();Map<Integer,List>map=new HashMap<>();for(int i=0;i<N;i++) {int value=sc.nextInt();int key=sc.nextInt();if(map.get(key)==null) {List<Integer>list = new ArrayList<>();list.add(value);map.put(key, list);}else {map.get(key).add(value);}}for(Integer key : map.keySet()) {List<Integer>list =map.get(key);int size=list.size();if(size<K)break;Collections.sort(list);int likes=1,maxLikes=1;for(int i=0;i<size-1;i++){for(int j=i+1;j<size;j++) {if(list.get(j)-list.get(i)<D) {likes++;}}maxLikes=Math.max(maxLikes, likes);}if(maxLikes>=K)System.out.println(key);}} }總結(jié)
以上是生活随笔為你收集整理的2018蓝桥杯省赛---java---B---8(日志统计)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 定制品牌独特的算法创造成功的品牌
- 下一篇: 2019蓝桥杯省赛---java---B