2018第九届蓝桥杯C++省赛B组[最新题解汇总]

标题:日志统计

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

思路:把每个日志获得的点赞信息存储好,按时间排序,用尺取法r在前l在后,当点赞数大于等于k,判断时间间隔,不满足就l往前取,r继续往后取,直到点赞数大于等于k执行相同判断.

代码:

#include <bits/stdc++.h>
#define mem(a, b) memset(a, b, sizeof(a))
#define mod 1000000007
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 5;
const double esp = 1e-7;
const int ff = 0x3f3f3f3f;
map<int, int>::iterator it;int n, d, k;
vector<int> t[maxn];
int ans[maxn];bool judge(int x)
{int len = t[x].size();if (len < k)return false;sort(t[x].begin(), t[x].end());int l = 0, r = 0;while (r < len){if (r - l + 1 >= k) // r-l+1为点赞数{if (t[x][r] - t[x][l] < d) //注意是小于return true;elsel++;}r++;}return false;
}int main()
{cin >> n >> d >> k;int maxId = 0;for (int i = 1; i <= n; i++){int ts, id;scanf("%d %d", &ts, &id);t[id].push_back(ts);maxId = max(maxId, id);}int cnt = 0;for (int i = 0; i < maxn; i++)if (judge(i))ans[++cnt] = i;for (int i = 1; i <= cnt; i++)printf("%d\n", ans[i]);return 0;
}

2018省赛第九届蓝桥杯真题C语言B组第八题题解 日志统计相关推荐

  1. 2018省赛第九届蓝桥杯真题C语言B组第十题题解 乘积最大

    2018第九届蓝桥杯C++省赛B组[最新题解汇总] 标题:乘积最大 给定N个整数A1, A2, ... AN.请你从中选出K个数,使其乘积最大.   请你求出最大的乘积,由于乘积可能超出整型范围,你只 ...

  2. 2018省赛第九届蓝桥杯真题C语言B组第五题题解 快速排序

    2018第九届蓝桥杯C++省赛B组[最新题解汇总] 标题:快速排序. 以下代码可以从数组a[]中找出第k小的元素. 它使用了类似快速排序中的分治算法,期望时间复杂度是O(N)的. 请仔细阅读分析源码, ...

  3. 2018省赛第九届蓝桥杯真题C语言B第四题题解 测试次数

    2018第九届蓝桥杯C++省赛B组[最新题解汇总] 标题:测试次数 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机 ...

  4. 2018省赛第九届蓝桥杯真题C语言B组第九题题解 全球变暖

    2018第九届蓝桥杯C++省赛B组[最新题解汇总] 标题:全球变暖 你有一张某海域NxN像素的照片,"."表示海洋."#"表示陆地,如下所示: ....... ...

  5. 2018省赛第九届蓝桥杯真题C语言B组第六题题解 递增三元组

    2018第九届蓝桥杯C++省赛B组[最新题解汇总] 标题:递增三元组 给定三个整数数组 A = [A1, A2, ... AN],  B = [B1, B2, ... BN],  C = [C1, C ...

  6. 第九届蓝桥杯真题解析JavaC组

    第九届蓝桥杯真题解析JavaC组 文章目录 ***第九届蓝桥杯真题解析JavaC组*** 前言 A.哪天回家 B.猴子分香蕉 C.字母阵列 D.第几个幸运数 E.书号验证 F.打印大X G.缩位求和 ...

  7. 2018年第九届蓝桥杯真题解析 | 日志统计【Python】

    问题描述 小明维护着一个程序员论坛.现在他收集了一份"点赞"日志,日志共有 N 行.其中每一行的格式是: ts id 表示在 ts 时刻编号 id 的帖子收到一个"赞&q ...

  8. 2018年第九届蓝桥杯真题解析 | 星期一【Python】

    问题描述 整个 2020 世纪(1901 年 1 月 1 日至 2000年 12 月 31 日之间),一共有多少个星期一? 个人思路 使用datetime模块 常见的datetime函数 1.S = ...

  9. 2015年第六届蓝桥杯C/C++程序设计本科B组决赛第二题

    http://www.docin.com/p-506195687.html 这样算不算写了一道题.... 完美正方形 如果一些边长互不相同的正方形,可以恰好拼出一个更大的正方形,则称其为完美正方形. ...

最新文章

  1. opencl fft实例整理
  2. Android4.0与2.3的差异
  3. 大道至简第六章读后感
  4. 二级 计算机 vf,计算机二级(VF)笔试-144.doc
  5. twitter达人不能不知的缩写
  6. 理解卷积神经网络的利器:9篇重要的深度学习论文(下)
  7. SpringMVC-HandlerInterceptor拦截器的使用与参数详解
  8. 移位密码算法-c语言,凯瑟移位密码(C语言).doc
  9. 基于51单片机实现8位数码管显示表白数字(Proteus仿真)
  10. MongoDB下载(速度较快操作)
  11. 网页音乐播放器 音乐播放器 html+css+js
  12. Golang(3)CentOS7系统安装Go语言
  13. 百度地图android wear,Android Wear多款搜狗地图标注内置
  14. u盘插到电脑计算机里没有反应,U盘插在Windows7电脑上没反应怎么办?
  15. 电影推荐系统 python简书_【记录|Spark】简单的电影推荐系统
  16. 用计算机程序实现离散化的对象模型,模糊PID应用
  17. JS: || 和 ??
  18. 频繁模式挖掘——概述
  19. 2009最新雷人语录
  20. 如何用css写回到顶部,css3 回到顶部书写

热门文章

  1. linux批量删除指定名称的文件夹
  2. 找出相似的图片--C#
  3. webp文件如何进行格式转换
  4. matlab 创建批量文件夹_如何在Mac上为照片加水印?水印照片怎样批量处理?
  5. 苹果手机iframe撑大父页解决办法
  6. Dynamics 365 批量删除记录
  7. 典型相关分析如何分析两组变量的关系
  8. 【BZOJ4094】[Usaco2013 Dec]Optimal Milking 线段树
  9. 咸鱼Micropython— machine库
  10. 如何用远丰DrpBuilder打造企业社会化分销体系