蓝桥杯·寒假百校真题大联赛(大学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

相关文章

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

IDEA与MyEclipse代码量统计方式

《IDEA与MyEclipse代码量统计方式》文章介绍在项目中不安装第三方工具统计代码行数的方法,分别说明MyEclipse通过正则搜索(排除空行和注释)及IDEA使用Statistic插件或调整搜索... 目录项目场景MyEclipse代码量统计IDEA代码量统计总结项目场景在项目中,有时候我们需要统计

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

nginx配置错误日志的实现步骤

《nginx配置错误日志的实现步骤》配置nginx代理过程中,如果出现错误,需要看日志,可以把nginx日志配置出来,以便快速定位日志问题,下面就来介绍一下nginx配置错误日志的实现步骤,感兴趣的可... 目录前言nginx配置错误日志总结前言在配置nginx代理过程中,如果出现错误,需要看日志,可以把

MySQL连表查询之笛卡尔积查询的详细过程讲解

《MySQL连表查询之笛卡尔积查询的详细过程讲解》在使用MySQL或任何关系型数据库进行多表查询时,如果连接条件设置不当,就可能发生所谓的笛卡尔积现象,:本文主要介绍MySQL连表查询之笛卡尔积查... 目录一、笛卡尔积的数学本质二、mysql中的实现机制1. 显式语法2. 隐式语法3. 执行原理(以Nes