【蓝桥杯】日志统计

日志统计(编程题)https://dashoj.com/d/lqbproblem/p/53https://dashoj.com/d/lqbproblem/p/53https://dashoj.com/d/lqbproblem/p/53

题目

日志统计(编程题)

讲解

这个讲解感觉比较通俗易懂。

蓝桥杯2018年省赛B组08(c/c++)日志统计_哔哩哔哩_bilibili努力学习, 视频播放量 1641、弹幕量 0、点赞数 24、投硬币枚数 8、收藏人数 15、转发人数 3, 视频作者 昨晚梦到有鸽子落在你肩上, 作者简介 考研小朋友,相关视频:乘积最大 --蓝桥杯2018年c/c++B组10,分数 蓝桥杯2018年省赛c/c++A01,蓝桥杯2018 星期一,红客联盟真有那么神?83小时深搜保卫战揭秘,【蓝桥杯】学会暴力拿下省一!,2024.1.19第十四届蓝桥杯EDA省赛真题(作业评讲3),蓝桥杯基础算法:一维差分,蓝桥杯~三升序列,美国要把TP-LINK禁了,这事实在不知该从哪里吐槽,2025年了,我们应该如何看待C++语言?https://www.bilibili.com/video/BV19i4y1377m?vd_source=f93e63f88343133e9467ba52a1737210https://www.bilibili.com/video/BV19i4y1377m?vd_source=f93e63f88343133e9467ba52a1737210https://www.bilibili.com/video/BV19i4y1377m?vd_source=f93e63f88343133e9467ba52a1737210

题目描述

小明维护着一个程序员论坛。现在他收集了一份“点赞”日志,日志共有 N行。其中每一行的格式是 ts id,表示在 ts时刻编号 id 的帖子收到一个“赞”。

现在小明想统计有哪些帖子曾经是“热帖”。如果一个帖子曾在任意一个长度为 D的时间段内收到不少于 K 个赞,小明就认为这个帖子曾是“热帖”。

具体来说,如果存在某个时刻 T满足该帖在 [T,T+D) 这段时间内(注意是左闭右开区间)收到不少于 K个赞,该帖就曾是“热帖”。

给定日志,请你帮助小明统计出所有曾是“热帖”的帖子编号。

输入格式

第一行包含三个整数 N、D 和 K。

以下 N 行每行一条日志,包含两个整数 ts 和 id。

输出格式

按从小到大的顺序输出热帖 id。每个 id 一行。

样例
输入数据 1
7 10 2  
0 1  
0 10    
10 10  
10 1  
9 1
100 3  
100 3
输出数据 1
1  
3
提示
  • 对于 50% 的数据,1≤K≤N≤1000。
  • 对于 100% 的数据,1≤K≤N≤10^5,0≤id,ts≤10^5

思路

双指针,滑动窗口,给id分组(按照时间从小到大的顺序)

使用pair数组分组,id虽然后输入,但要放在first,这样以id为优先排序

比如样例的

0 1  
0 10    
10 10  
10 1  
9 1
100 3  
100 3

按照id为first进行排序后

id  ts
1   0
1   9
1   10
3   100
3   100
10  0
10  10

通过循环得到每个id的begin和end,然后用自定义的judge函数进行判断这个id是否是热帖。

judge函数:核心是双指针

  • 双指针窗口初始化

    • 快指针i与慢指针j初始指向当前id的起始位置begin

    • sum记录窗口内有效点赞数,初始为0

  • 窗口滑动逻辑

    1. 窗口扩张:快指针i右移,sum++累计点赞数

    2. 阈值检测:当sum >= k时,检查窗口时间跨度p[i].y - p[j].y

      • 若时间差< d:满足热帖条件,直接返回true

      • 否则:慢指针j右移缩小窗口,sum--保持窗口大小

    3. 终止条件:快指针i超出当前id的end位置

  • 关键性质

    • 通过单调滑动窗口确保时间复杂度为O(n)

    • 依赖时间有序性(因预处理排序保证)

代码

#include<iostream>
#include<string>
#include<algorithm>using namespace std;
const int N=1e5+5;
pair<int,int>p[N];bool judge(int begin, int end);#define x first
#define y second
int n,d,k;int main() {cin>>n>>d>>k;for(int i=0;i<n;i++){cin>>p[i].y>>p[i].x;//让后输入的id放到pair数组的first位置,这样排序时以id优先}sort(p,p+n);int i=0;while(i<n){int id=p[i].x;int begin=i,end;while(id==p[i].x&&i<n)//找到每组id的起始位置和终止位置{end=i;i++;}if(judge(begin,end))//对这个id进行判断是否为热帖{cout<<p[end].x<<endl;}}return 0;
}bool judge(int begin, int end) {int i=begin,j=begin;int sum=0;while(j<=i&&i<=end)//使用双指针{sum++;if(sum>=k){if(p[i].y-p[j].y<d)return true;else{sum--;j++;}}i++;}return false;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/12598.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文讲解Spring中应用的设计模式

我们都知道Spring 框架中用了蛮多设计模式的&#xff1a; 工厂模式呢&#xff0c;就是用来创建对象的&#xff0c;把对象的创建和使用分开&#xff0c;这样代码更灵活。代理模式呢&#xff0c;是用一个代理对象来控制对真实对象的访问&#xff0c;可以在访问前后做一些处理。单…

AI 算力瓶颈,硬件、算法、共享能否破局?

随着AI技术的蓬勃发展&#xff0c;它已经实现了从实验室走向千行百业&#xff0c;然而在它想要继续深入地探索各行各业&#xff0c;解锁更多应用场景时&#xff0c;算力却成为了它面前的一道关卡。 这道关卡由无数需要处理的数据和计算任务堆积而成&#xff0c;想要实现AI技术…

华为小米vivo向上,苹果荣耀OPPO向下

日前&#xff0c;Counterpoint发布的手机销量月度报告显示&#xff0c;中国智能手机销量在2024年第四季度同比下降3.2%&#xff0c;成为2024年唯一出现同比下滑的季度。而对于各大智能手机品牌来说&#xff0c;他们的市场份额和格局也在悄然发生变化。 华为逆势向上 在2024年第…

github下载失败网页打开失败 若你已经知道github地址如何cmd下载

直接打开命令行&#xff1a; winr cmd 输入&#xff1a;git clone 地址 eg&#xff1a;git clone https://github.com/akospasztor/stm32f103-dfu-bootloader

K8S学习笔记-------1.安装部署K8S集群环境

1.修改为root权限 #sudo su 2.修改主机名 #hostnamectl set-hostname k8s-master01 3.查看网络地址 sudo nano /etc/netplan/01-netcfg.yaml4.使网络配置修改生效 sudo netplan apply5.修改UUID&#xff08;某些虚拟机系统&#xff0c;需要设置才能生成UUID&#xff09;#…

二维数组 C++ 蓝桥杯

1.稀疏矩阵 #include<iostream> using namespace std;const int N 1e4 10; int a[N][N];int main() {int n, m; cin >> n >> m;for (int i 1; i < n; i) {for (int j 1; j < m; j) {cin >> a[i][j];}}for (int j m; j > 1; j--) {for (i…

macos系统jmap执行异常

jdk8环境下执行jmap异常 网上说mac环境jdk8不支持Jmap&#xff0c;需要替换成更高的jdk版本&#xff0c;更改zshrc文件的jdk版本 环境变量生效 执行jmap不再报错

Linux 传输层协议 UDP 和 TCP

UDP 协议 UDP 协议端格式 16 位 UDP 长度, 表示整个数据报(UDP 首部UDP 数据)的最大长度如果校验和出错, 就会直接丢弃 UDP 的特点 UDP 传输的过程类似于寄信 . 无连接: 知道对端的 IP 和端口号就直接进行传输, 不需要建立连接不可靠: 没有确认机制, 没有重传机制; 如果因…

HTB:UnderPass[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用nmap对靶机UDP开放端口进行脚本、服务扫描 …

ARM内核:嵌入式时代的核心引擎

引言 在当今智能设备无处不在的时代&#xff0c;ARM&#xff08;Advanced RISC Machines&#xff09;处理器凭借其高性能、低功耗的特性&#xff0c;成为智能手机、物联网设备、汽车电子等领域的核心引擎。作为精简指令集&#xff08;RISC&#xff09;的典范&#xff0c;ARM核…

基于RK3588/RK3576+MCU STM32+AI的储能电站电池簇管理系统设计与实现

伴随近年来新型储能技术的高质量规模化发展&#xff0c;储能电站作为新能源领域的重要载体&#xff0c; 旨在配合逐步迈进智能电网时代&#xff0c;满足电力系统能源结构与分布的创新升级&#xff0c;给予相应规模 电池管理系统的设计与实现以新的挑战。同时&#xff0c;电子系…

【HarmonyOS之旅】基于ArkTS开发(二) -> UI开发三

目录 1 -> 绘制图形 1.1 -> 绘制基本几何图形 1.2 -> 绘制自定义几何图形 2 -> 添加动画效果 2.1 -> animateTo实现闪屏动画 2.2 -> 页面转场动画 3 -> 常见组件说明 1 -> 绘制图形 绘制能力主要是通过框架提供的绘制组件来支撑&#xff0c;支…

【算法】经典博弈论问题——威佐夫博弈 python

目录 威佐夫博弈(Wythoff Game)【模板】 威佐夫博弈(Wythoff Game) 有两堆石子&#xff0c;数量任意&#xff0c;可以不同&#xff0c;游戏开始由两个人轮流取石子 游戏规定&#xff0c;每次有两种不同的取法 1)在任意的一堆中取走任意多的石子 2)可以在两堆中同时取走相同数量…

通过Redisson构建延时队列并实现注解式消费

目录 一、序言二、延迟队列实现1、Redisson延时消息监听注解和消息体2、Redisson延时消息发布器3、Redisson延时消息监听处理器 三、测试用例四、结语 一、序言 两个月前接了一个4万的私活&#xff0c;做一个线上商城小程序&#xff0c;在交易过程中不可避免的一个问题就是用户…

第一个Qt开发实例(一个Push Button按钮和两个Label)【包括如何在QtCreator中创建新工程、代码详解、编译、环境变量配置、测试程序运行等】

目录 Qt开发环境QtCreator的安装、配置在QtCreator中创建新工程在Forms→mainwindow.ui中拖曳出我们要的图形按钮查看拖曳出按钮后的代码为pushButton这个图形添加回调函数编译工程关闭开发板上QT的GUI(选做)禁止LCD黑屏(选做)设置Qt运行的环境变量运行Qt程序如何让程序在系统启…

Spring Security(maven项目) 3.0.3.0版本

前言&#xff1a; 通过实践而发现真理&#xff0c;又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识&#xff0c;又从理性认识而能动地指导革命实践&#xff0c;改造主观世界和客观世界。实践、认识、再实践、再认识&#xff0c;这种形式&#xff0c;循环往…

携程Java开发面试题及参考答案 (200道-上)

说说四层模型、七层模型。 七层模型(OSI 参考模型) 七层模型,即 OSI(Open System Interconnection)参考模型,是一种概念模型,用于描述网络通信的架构。它将计算机网络从下到上分为七层,各层的功能和作用如下: 物理层:物理层是计算机网络的最底层,主要负责传输比特流…

【Rust自学】16.4. 通过Send和Sync trait来扩展并发

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 16.4.1. Send和Sync trait Rust语言本身的并发特性较少&#xff0c;目前所提及的并发特性都来自于标准库&#xff0c;而不是语言本身。其…

MYSQL面试题总结(题目来源JavaGuide)

MYSQL基础架构 问题1&#xff1a;一条 SQL语句在MySQL中的执行过程 1. 解析阶段 (Parsing) 查询分析&#xff1a;当用户提交一个 SQL 语句时&#xff0c;MySQL 首先会对语句进行解析。这个过程会检查语法是否正确&#xff0c;确保 SQL 语句符合 MySQL 的语法规则。如果发现…

传输层协议——TCP协议

文章目录 &#x1f34d;TCP协议谈谈可靠性TCP协议格式序号与确认序号窗口大小六个标志位 确认应答机制&#xff08;ACK&#xff09;超时重传机制连接管理机制三次握手四次挥手 流量控制滑动窗口拥塞控制延迟应答捎带应答面向字节流粘包问题TCP异常情况TCP小结基于TCP的应用层协…