题目2279:蓝桥杯2018年第九届真题-日志统计

#include <iostream>

#include <vector>

#include <algorithm>

using namespace std;

int main()

{

int N, D, K;

cin >> N >> D >> K;

vector< vector<int> > nums(100002); // 二维向量,外层索引是帖子id

int a = 0, b = 0; // a是时间戳,b是帖子id

// 读取输入,按帖子id归类存储

for (int i = 0; i < N; i++)

{

cin >> a >> b; // a是时间戳,b是帖子id

nums[b].push_back(a); // 将时间戳存入对应id的桶中

}

// 遍历所有可能的帖子id(0-100001)

for (int i = 0; i < 100002; i++)

{

// 特殊情况:K == 1,只要有点赞就是热帖

if (K == 1 && nums[i].size() >= 1)

{

cout << i <<endl;

continue;

}

// 如果该帖子有点赞记录

if (nums[i].size() >= 1)

{

int out = 1; // 计数器,计算满足条件的点赞数

bool backnow = false; // 是否已经找到并输出的标志

// 遍历该帖子的所有点赞时间戳

for (int j = 0; j < nums[i].size(); j++)

{

// 与其他点赞时间戳进行比较

for (int m = 0; m < nums[i].size() && m != j; m++)

{

// 判断两个时间戳是否在时间间隔D内

if (abs(nums[i][j] - nums[i][m]) < D)

{

out++; // 满足条件,计数加1

if (out >= K) // 达到热帖标准

{

cout << i <<endl;

backnow = true;

break;

}

}

}

if (backnow)

{

break; // 已经输出,结束当前帖子的判断

}

}

}

}

return 0;

}

相关推荐
xiaoye-duck17 小时前
《算法题讲解指南:递归,搜索与回溯算法--综合练习》--14.找出所有子集的异或总和再求和,15.全排列Ⅱ,16.电话号码的字母组合,17.括号生成
c++·算法·深度优先·回溯
OOJO17 小时前
c++---vector介绍
c语言·开发语言·数据结构·c++·算法·vim·visual studio
茉莉玫瑰花茶17 小时前
数据结构 - 并查集
数据结构
汀、人工智能17 小时前
05 - 函数基础
数据结构·算法·数据库架构·05 - 函数基础
HAPPY酷17 小时前
Python高级架构师之路——从原理到实战
java·python·算法
枫叶林FYL17 小时前
第9章 因果推理与物理理解
人工智能·算法·机器学习
Tanecious.17 小时前
蓝桥杯备赛:Day5-P1706 全排列问题
c++·蓝桥杯
胖咕噜的稞达鸭18 小时前
C++技术岗面试经验总结
开发语言·网络·c++·网络协议·tcp/ip·面试
Wild_Pointer.18 小时前
高效工具实战指南:从零开始编写CMakeLists
c++
小白zlm18 小时前
预畸变双线性变换
单片机·嵌入式硬件·算法·电机控制