日志统计

小明维护着一个程序员论坛。现在他收集了一份"点赞"日志,日志共有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 }

转载于:https://www.cnblogs.com/tianyahai/p/10485149.html

(蓝桥杯)2018JAVA B组 日志分析相关推荐

  1. 2019第十届蓝桥杯JAVA B组题目分析

    目录 A:组队(难度:★★★) 分析: 代码 B:不同字串(难度:★) 分析: 代码: C:数列求值(难度:★) 分析: 代码: D:数的分解:(难度:★★) 分析: 代码: E:迷宫:(难度:★★★ ...

  2. 蓝桥杯C++ AB组辅导课

    整理的算法模板合集: ACM模板 今天在AcWing闲逛白嫖到了yxc老师的蓝桥杯C++ AB组辅导课的题单,正好快要蓝桥杯了,我准备每天花半个小时刷5道这个题单里的水题,练一练,不然到时候我各种花里 ...

  3. 2018年 第9届 蓝桥杯 Java B组 省赛真题详解及总结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:部分 ...

  4. 第九届蓝桥杯C++B组

    第九届蓝桥杯C++B组C++与python解法 1.标题:第几天 2000年的1月1日,是那一年的第1天. 那么,2000年的5月4日,是那一年的第几天? 注意:需要提交的是一个整数,不要填写任何多余 ...

  5. 【AcWing】蓝桥杯C++ AB组辅导课

    蓝桥杯 C++ AB 组辅导课 教学计划与递归 如何准备蓝桥杯比赛 做题的套路 第一讲 递归与递推 递归实现指数型枚举 递归实现排列型枚举 递归实现组合型枚举 AcWing116.飞行员兄弟 第二讲 ...

  6. 2015年 第06届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  7. 2016年 第07届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  8. 2018年 第09届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  9. 2019年 第10届 蓝桥杯 Java B组 省赛真题详解及总结

    蓝桥杯 Java B组 省赛真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 注意:部分代码及程序 源自 蓝桥杯 官网视频(历年真题解析) 郑未老师. 2013年 第04届 蓝桥杯 ...

最新文章

  1. 院士口中的“现代人知识结构”,学者推崇的“效率公民必备”,统计思维到底有什么了不起?...
  2. 《ASP.NET MVC 4框架揭秘》试读章节
  3. 阿里云存储_OSS对象存储
  4. Java开发的几个注意点
  5. 图像处理算法打包成dll
  6. java面试题4 牛客:运行下列代码,运行结果为
  7. centos7时间同步_centos 8.x系统配置chrony时间同步服务
  8. 全市场等权中位数_A股市场周内效应研究
  9. iPhone 13系列整机较iPhone 12更重 最重接近半斤
  10. 《Java线程与并发编程实践》—— 1.2 操作更高级的线程任务
  11. java-cef系列视频第三集:添加flash支持
  12. RAID0、1、5、6、10介绍
  13. FileSync文件同步更新工具
  14. Beyond Compare怎么查看合并文本后相同内容
  15. 织梦dedecms百度快照劫持注入代码防范与清除
  16. javaweb_XML学习
  17. 闲置的华为悦盒搭建海思NASUbuntu系统(二)
  18. nginx 504错误日志出现 upstream timed out (110: Connection timed out) while reading response
  19. MFC模拟登陆、操作路由器
  20. 深度学习的时间序列分类

热门文章

  1. Android 如何调用系统默认浏览器访问
  2. 关于JS的传递方式的小理解
  3. SQL SERVER 中 GO 的用法2
  4. SELECT语句,去除某个字段的重复信息
  5. 数字模拟信号 单双信道传输
  6. python 中移去文件的只读属性
  7. C#多线程学习(一) 多线程的相关概念(转自xugang的blog)
  8. 一个DotNetNuke 皮肤设计参考网站
  9. 如何push一个docker镜像到DockerHub上
  10. 实例演示oracle注入获取cmdshell的全过程