蓝桥杯·寒假百校真题大联赛(大学B组)(第5期)题目讲解:日志统计

2024-06-09 05:58

本文主要是介绍蓝桥杯·寒假百校真题大联赛(大学B组)(第5期)题目讲解:日志统计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

代码:

#include<iostream>
#include<vector>
#include<algorithm> 
#include<climits>
using namespace std;
struct post{int ts;int id;
}ps[100005];
bool hotTag[100005]; 
int countNum[100005];
int startID=INT_MAX,endID=0;//为了获取有效区间 
bool comparison(post a,post b){if(a.id<b.id) return true;else if(a.id==b.id){if(a.ts<b.ts) return true;else return false;}else return false;
}
int main()
{ //k个赞就是热帖//相差d时间段内 int n,d,k;cin>>n>>d>>k;for(int i=0;i<n;i++){cin>>ps[i].ts>>ps[i].id;if(ps[i].id>endID) endID=ps[i].id;if(ps[i].id<startID) startID=ps[i].id;}sort(ps,ps+n,comparison);for(int i=0;i<n;i++){int t1=ps[i].ts;int id1=ps[i].id;countNum[id1]=1;if(hotTag[id1]) continue;for(int j=i+1;j<n;j++){int t2=ps[j].ts;int id2=ps[j].id;if(t2-t1>=d) break;if(id2!=id1) break;countNum[id1]++;}if(countNum[id1]>=k) hotTag[id1]=true;//不能放到循环里面,循环里面是判断除了自己还有多少,而这个判断标准是判断总数。}for(int i=startID;i<=endID;i++){if(hotTag[i]) cout<<i<<endl;}return 0;
}

初步优化的方式就是减去无效计算,减少无效计算的一种方法就是要重点关注题目的问题域,尽量不要计算问题域之外的数据。

我们以id作为第一关键字进行从小到大排序,同时以时间作为第二关键字,从小到大进行排序。最终我们得到了一个相同id的数据聚集在一起,而且这些id还以时间从小到大进行排序。这样我们在遍历id计算点赞数的时候就不需要重复遍历那些与本次计算的id不同的id了,这些遍历都是无效遍历。同时遍历时超过t+d这个时间段之外的点赞不在遍历,这样就是省下来重复遍历那些根本不在合理时间段要求内的点赞的算力。这两种优化就能保证题目通过。

b站讲解地址:​​​​​​​蓝桥杯·寒假百校真题大联赛(大学B组)(第5期)题目讲解:日志统计_哔哩哔哩_bilibili

这篇关于蓝桥杯·寒假百校真题大联赛(大学B组)(第5期)题目讲解:日志统计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1044375

相关文章

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

RabbitMQ消费端单线程与多线程案例讲解

《RabbitMQ消费端单线程与多线程案例讲解》文章解析RabbitMQ消费端单线程与多线程处理机制,说明concurrency控制消费者数量,max-concurrency控制最大线程数,prefe... 目录 一、基础概念详细解释:举个例子:✅ 单消费者 + 单线程消费❌ 单消费者 + 多线程消费❌ 多

从入门到进阶讲解Python自动化Playwright实战指南

《从入门到进阶讲解Python自动化Playwright实战指南》Playwright是针对Python语言的纯自动化工具,它可以通过单个API自动执行Chromium,Firefox和WebKit... 目录Playwright 简介核心优势安装步骤观点与案例结合Playwright 核心功能从零开始学习

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

C++ Log4cpp跨平台日志库的使用小结

《C++Log4cpp跨平台日志库的使用小结》Log4cpp是c++类库,本文详细介绍了C++日志库log4cpp的使用方法,及设置日志输出格式和优先级,具有一定的参考价值,感兴趣的可以了解一下... 目录一、介绍1. log4cpp的日志方式2.设置日志输出的格式3. 设置日志的输出优先级二、Window

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

解读GC日志中的各项指标用法

《解读GC日志中的各项指标用法》:本文主要介绍GC日志中的各项指标用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、基础 GC 日志格式(以 G1 为例)1. Minor GC 日志2. Full GC 日志二、关键指标解析1. GC 类型与触发原因2. 堆

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、