2018省赛第九届蓝桥杯真题C语言B组第八题题解 日志统计
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组第八题题解 日志统计相关推荐
- 2018省赛第九届蓝桥杯真题C语言B组第十题题解 乘积最大
2018第九届蓝桥杯C++省赛B组[最新题解汇总] 标题:乘积最大 给定N个整数A1, A2, ... AN.请你从中选出K个数,使其乘积最大. 请你求出最大的乘积,由于乘积可能超出整型范围,你只 ...
- 2018省赛第九届蓝桥杯真题C语言B组第五题题解 快速排序
2018第九届蓝桥杯C++省赛B组[最新题解汇总] 标题:快速排序. 以下代码可以从数组a[]中找出第k小的元素. 它使用了类似快速排序中的分治算法,期望时间复杂度是O(N)的. 请仔细阅读分析源码, ...
- 2018省赛第九届蓝桥杯真题C语言B第四题题解 测试次数
2018第九届蓝桥杯C++省赛B组[最新题解汇总] 标题:测试次数 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机 ...
- 2018省赛第九届蓝桥杯真题C语言B组第九题题解 全球变暖
2018第九届蓝桥杯C++省赛B组[最新题解汇总] 标题:全球变暖 你有一张某海域NxN像素的照片,"."表示海洋."#"表示陆地,如下所示: ....... ...
- 2018省赛第九届蓝桥杯真题C语言B组第六题题解 递增三元组
2018第九届蓝桥杯C++省赛B组[最新题解汇总] 标题:递增三元组 给定三个整数数组 A = [A1, A2, ... AN], B = [B1, B2, ... BN], C = [C1, C ...
- 第九届蓝桥杯真题解析JavaC组
第九届蓝桥杯真题解析JavaC组 文章目录 ***第九届蓝桥杯真题解析JavaC组*** 前言 A.哪天回家 B.猴子分香蕉 C.字母阵列 D.第几个幸运数 E.书号验证 F.打印大X G.缩位求和 ...
- 2018年第九届蓝桥杯真题解析 | 日志统计【Python】
问题描述 小明维护着一个程序员论坛.现在他收集了一份"点赞"日志,日志共有 N 行.其中每一行的格式是: ts id 表示在 ts 时刻编号 id 的帖子收到一个"赞&q ...
- 2018年第九届蓝桥杯真题解析 | 星期一【Python】
问题描述 整个 2020 世纪(1901 年 1 月 1 日至 2000年 12 月 31 日之间),一共有多少个星期一? 个人思路 使用datetime模块 常见的datetime函数 1.S = ...
- 2015年第六届蓝桥杯C/C++程序设计本科B组决赛第二题
http://www.docin.com/p-506195687.html 这样算不算写了一道题.... 完美正方形 如果一些边长互不相同的正方形,可以恰好拼出一个更大的正方形,则称其为完美正方形. ...
最新文章
- opencl fft实例整理
- Android4.0与2.3的差异
- 大道至简第六章读后感
- 二级 计算机 vf,计算机二级(VF)笔试-144.doc
- twitter达人不能不知的缩写
- 理解卷积神经网络的利器:9篇重要的深度学习论文(下)
- SpringMVC-HandlerInterceptor拦截器的使用与参数详解
- 移位密码算法-c语言,凯瑟移位密码(C语言).doc
- 基于51单片机实现8位数码管显示表白数字(Proteus仿真)
- MongoDB下载(速度较快操作)
- 网页音乐播放器 音乐播放器 html+css+js
- Golang(3)CentOS7系统安装Go语言
- 百度地图android wear,Android Wear多款搜狗地图标注内置
- u盘插到电脑计算机里没有反应,U盘插在Windows7电脑上没反应怎么办?
- 电影推荐系统 python简书_【记录|Spark】简单的电影推荐系统
- 用计算机程序实现离散化的对象模型,模糊PID应用
- JS: || 和 ??
- 频繁模式挖掘——概述
- 2009最新雷人语录
- 如何用css写回到顶部,css3 回到顶部书写