当前位置: 首页 > article >正文

蓝桥杯基础--时间复杂度

目录一、 什么是时间复杂度大O表示法的两大核心原则二、 常见的时间复杂度全解析1. O(1) - 常数复杂度2. O(log N) - 对数复杂度3. O(N) - 线性复杂度4. O(N log N) - 线性对数复杂度5. O(N^2) - 平方复杂度6. O(2^N) 和 O(N!) - 指数与阶乘复杂度三、 蓝桥杯赛场上的“一秒法则”四、 实战绝技看数据范围猜算法五、 蓝桥杯特色“骗分”与部分分策略六、 总结在蓝桥杯、ACM、牛客等各类算法竞赛中很多初学者都会经历这样一种痛辛辛苦苦敲出几百行代码样例测试完美通过满怀信心地点击“提交”结果却迎来了刺眼的TLE (Time Limit Exceeded超出时间限制)。在蓝桥杯的赛制中一道大题通常有多个测试点TLE 往往意味着你只能拿到极少的部分分数甚至颗粒无收。为什么代码逻辑明明是对的却拿不到满分这就引出了算法竞赛中最核心、也是最基础的概念之一时间复杂度。本文将从零开始带你彻底搞懂时间复杂度并掌握在蓝桥杯赛场上“看数据范围猜算法”的独门绝技。一、 什么是时间复杂度很多同学以为评估一个程序跑得快不快直接用秒表测一下运行时间就可以了。但实际上同一个程序在顶级服务器上和在老旧的笔记本电脑上运行时间是天差地别的甚至使用不同的编程语言C、Java、Python执行效率也有巨大差异。因此我们需要一个独立于硬件和语言的客观标准来衡量算法的效率。这就是时间复杂度。时间复杂度并不是计算程序具体运行了多少秒而是评估随着输入数据规模$N$的增大算法执行基本操作次数的增长趋势。在计算机科学中我们通常使用大O符号 (Big O notation)来表示时间复杂度例如 $O(1)$、$O(N)$、$O(N^2)$ 等。大O表示法的两大核心原则忽略常数项如果一个算法执行了 3N 次操作我们不写成 O(3N)而是直接写成 O(N)。因为当 N 趋于无穷大时常数 3 的影响微乎其微。同理O(N/2) 也是 O(N)。只保留最高阶项如果一个算法的操作次数是 N^2 5N 1000我们只保留最高阶的 N^2即 O(N^2)。因为随着 N 的急剧膨胀低阶项 5N 和常数项 1000 都可以忽略不计。二、 常见的时间复杂度全解析在蓝桥杯的题目中我们最常遇到的时间复杂度有以下几种按照运行效率从高到低即增长速度从慢到快排列1. O(1) - 常数复杂度无论数据规模 N 有多大算法只需执行固定的次数即可完成。示例判断一个数是否为偶数、利用数学公式直接计算等差数列求和。int sum (1 n) * n / 2; // O(1)2. O(log N) - 对数复杂度极其高效通常出现在每次操作都能将数据规模减半的算法中。示例二分查找Binary Search、快速幂、求最大公约数辗转相除法。 当 N 10^9十亿时log_2(10^9) 仅仅只有大约 30 次操作int l 0, r n; while(l r) { int mid l (r - l) / 2; if(check(mid)) ans mid, l mid 1; else r mid - 1; }3. O(N) - 线性复杂度算法的执行时间与数据规模成正比。通常表现为一层 for 循环。示例遍历数组、求数组最大值、双指针算法、KMP 字符串匹配。for(int i 0; i n; i) { // 基础操作 }4. O(N log N) - 线性对数复杂度这是算法竞赛中最常见的复杂度之一。通常是结合了分治思想。示例快速排序Quick Sort、归并排序、堆排序、线段树/树状数组的单次构建。 C STL 中的sort()函数其时间复杂度就是严格的 O(N log N)。5. O(N^2) - 平方复杂度通常表现为嵌套的两层 for 循环。当数据规模稍微变大时运行时间就会急剧上升。示例冒泡排序、插入排序、简单的二维矩阵遍历、基础的动态规划。for(int i 0; i n; i) { for(int j 0; j n; j) { // 基础操作 } }6. O(2^N) 和 O(N!) - 指数与阶乘复杂度这两种被称为“爆炸型”复杂度。除非数据规模极小否则绝对会 TLE。示例没有优化的递归、穷举所有的子集2^N、全排列枚举N!。三、 蓝桥杯赛场上的“一秒法则”在蓝桥杯中绝大多数题目的时间限制是1.0 秒。 那么1秒钟内计算机到底能执行多少次操作呢记住这个黄金准则针对 C/C 而言现代计算机1秒钟大约能执行10^7到10^8次基本运算。如果你的算法需要执行10^7次操作毫无压力瞬间跑完。如果是 10^8 次比较悬但如果常数较小代码写得很精简一般也能卡着时间过。如果是 10^9 次或更多必定 TLE。四、 实战绝技看数据范围猜算法既然我们知道了“1秒钟跑 10^8 次”这个底线那么在蓝桥杯比赛时我们完全可以根据题目给定的数据范围N来反推这道题应该用什么复杂度的算法这是拿奖牌最核心的技巧之一。我们来看一张“祖传”的神奇对照表数据规模 $N$最大允许的复杂度对应的常见算法类型$N \le 20$$O(2^N)$ 或 $O(N!)$深度优先搜索(DFS)、状态压缩DP、全排列$N \le 100$$O(N^3)$Floyd多源最短路、区间DP、矩阵乘法$N \le 10^3$$O(N^2)$两重循环、朴素版Dijkstra、简单的DP递推$N \le 10^5$$O(N \log N)$排序、二分查找、线段树、贪心加优先队列$N \le 10^6$$O(N)$双指针、单调栈/单调队列、KMP、前缀和$N \ge 10^9$$O(\log N)$ 或 $O(1)$数学定理如数论、快速幂、或者寻找规律【实战模拟】假设题目描述了一个复杂的问题你在考场上一筹莫展但你扫了一眼题目的输入格式“对于100%的数据满足1 N 10 ^5。”此时你的大脑应该迅速产生条件反射N 10^5如果写 O(N^2的两层循环操作次数是(10^5)² 10^10远超10^8必定 TLE。因此正确算法的复杂度一定是 O(N)或者 O(N log N)。接着去思考这题能不能先排个序O(N log N)能不能用双指针扫一遍O(N)是不是二分答案O(N log N)) ?这一步能够帮你过滤掉90%的错误思考方向直奔正解。五、 蓝桥杯特色“骗分”与部分分策略蓝桥杯的赛制属于类似 OI信息学奥赛的赛制按测试点给分。一道 20 分的编程大题通常包含 10 个测试点。如果一道题的数据范围是N ≤ 10^5 需要O(N Iog N算法)但你实在想不出最优解该怎么办千万不要交白卷仔细看题目的数据范围说明通常会有梯度对于 30%的数据 N 1000, 对于 100%的数据N 1^5这意味着什么意味着你只要写一个最简单的、甚至看起来很蠢的 O(N^2) 暴力双重循环提交上去这 30% 的数据你就能在 1 秒内跑完稳稳拿到 6 分在蓝桥杯中省赛拿奖往往就是靠这道题骗 6 分那道题骗 10 分拼凑出来的。竞赛格言暴力出奇迹打表过样例。想不出正解直接上暴力 O(N^2) 或 DFS 搜索拿到 30% ~ 50% 的基础分。把节省下来的时间去死磕那些你真正有把握拿满分的题目。六、 总结时间复杂度不仅仅是一个学术概念它是算法竞赛生手中的“指南针”和“量油尺”。牢记 10^8次操作/秒这个分水岭。养成做题前先看数据范围的习惯做到看N定算法。比赛时分清主次实在无法优化复杂度时果断写暴力拿部分分。修炼好时间复杂度这门内功你不仅能告别满屏的 TLE 报错更能站在出题人的角度审视题目。

相关文章:

蓝桥杯基础--时间复杂度

目录 一、 什么是时间复杂度? 大O表示法的两大核心原则: 二、 常见的时间复杂度全解析 1. O(1) - 常数复杂度 2. O(log N) - 对数复杂度 3. O(N) - 线性复杂度 4. O(N log N) - 线性对数复杂度 5. O(N^2) - 平方复杂度 6. O(2^N) 和 O(N!) - 指…...

Jetson Nano三合一串口方案对比:40pin/USB3.0/独立模块到底怎么选?

Jetson Nano三合一串口方案深度评测:硬件选型与实战指南 在嵌入式开发领域,Jetson Nano作为一款高性能边缘计算设备,其串口通信能力直接影响着与各类传感器、控制器(如STM32)的数据交互效率。面对40pin GPIO直连、USB3…...

告别手动刷新!利用Python+Selenium实现问卷星讲座秒抢的实战教程

PythonSelenium自动化实战:高效抢票系统开发指南 从零构建自动化抢票工具 每次看到心仪的讲座或活动开放报名,却总是因为手速不够快而错过?手动刷新页面不仅效率低下,还容易因网络延迟错失良机。本文将带你用Python和Selenium打造…...

Ubuntu-Hyprland高效部署指南:零基础上手Wayland窗口管理器

Ubuntu-Hyprland高效部署指南:零基础上手Wayland窗口管理器 【免费下载链接】Ubuntu-Hyprland Automated Hyprland installer for Ubuntu. NOTE: Repo Branches as per Ubuntu Versions 项目地址: https://gitcode.com/gh_mirrors/ubu/Ubuntu-Hyprland Ubunt…...

新手快速上手Python:Miniconda-Python3.10镜像部署全流程解析

新手快速上手Python:Miniconda-Python3.10镜像部署全流程解析 1. 为什么选择Miniconda-Python3.10 Python作为当下最流行的编程语言之一,以其简洁易读的语法和丰富的生态系统著称。但对于新手来说,环境配置往往是第一个拦路虎。Miniconda-P…...

Moondream2与MySQL结合:构建图像内容数据库

Moondream2与MySQL结合:构建图像内容数据库 1. 引言 想象一下,你手头有成千上万张产品图片,想要快速找到所有包含"红色连衣裙"的图片,或者需要统计所有"户外场景"的商品照片。传统的人工筛选方式不仅耗时费…...

UE5性能调优实战:手把手教你用Unreal Insights揪出卡顿元凶(附完整配置流程)

UE5性能调优实战:手把手教你用Unreal Insights揪出卡顿元凶(附完整配置流程) 当你的UE5项目在特定场景突然掉帧时,那种无力感就像在迷雾中寻找出口。作为经历过数十个项目性能调优的老兵,我总结了一套用Unreal Insight…...

MTKClient技术指南:从底层通信到设备深度控制

MTKClient技术指南:从底层通信到设备深度控制 【免费下载链接】mtkclient MTK reverse engineering and flash tool 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient 一、认知铺垫:MTK设备通信的底层逻辑 1.1 为什么需要专用工具&#x…...

GLM-ASR-Nano-2512一文详解:从模型下载到API集成全流程

GLM-ASR-Nano-2512一文详解:从模型下载到API集成全流程 1. 开篇:认识这个强大的语音识别模型 今天给大家介绍一个真正实用的语音识别工具——GLM-ASR-Nano-2512。这是一个拥有15亿参数的开源语音识别模型,专门为处理真实世界的复杂语音场景…...

AI 日报 - 2026年3月25日

1. "龙虾"OpenClaw史上最大更新翻车,腾讯微信插件也遭殃OpenClaw("龙虾")在3月23日推出v2026.3.22版本——史上规模最大的一次重构,插件系统全面改头换面,结果翻车了。升级包甚至漏掉了控制台&…...

WireShark4.0安装后必做的5项安全设置(Win10网络工程师实操版)

WireShark 4.0专业级安全配置指南:企业网络工程师的5项核心优化 在企业级网络环境中,WireShark早已超越了简单的抓包工具定位,成为网络故障排查、安全审计和协议分析的多面手。但鲜有人意识到,默认安装配置下的WireShark可能成为网…...

拆解汉朔电子价签:如何用2.13寸墨水屏DIY智能时钟(STM32开发指南)

从电子价签到智能时钟:2.13寸墨水屏的STM32深度改造指南 在物联网设备爆发的时代,电子价签作为零售行业的数字化工具已经遍布商场超市。这些被淘汰的价签设备中,最珍贵的组件莫过于那块低功耗、高对比度的墨水屏。本文将带你深入探索如何将一…...

Code Embedding研究系列二:从AST到向量——结构感知的代码表示新范式

1. 为什么需要结构感知的代码表示? 当我们阅读一段代码时,大脑会自动解析代码的结构——比如for循环的嵌套层级、if-else的分支逻辑、函数调用的依赖关系。这种结构信息对理解代码语义至关重要,但传统的token序列embedding方法(比…...

告别混乱代码!用Vim marker模式实现智能折叠(含{{{ }}}标记技巧)

告别混乱代码!用Vim marker模式实现智能折叠(含{{{ }}}标记技巧) 在维护大型代码库时,开发者常面临一个共同挑战:如何在数千行代码中快速定位关键逻辑?传统的手动滚动浏览效率低下,而Vim的marke…...

Downr1n:告别iOS系统困扰,轻松实现设备固件定制与优化

Downr1n:告别iOS系统困扰,轻松实现设备固件定制与优化 【免费下载链接】downr1n downgrade tethered checkm8 idevices ios 14, 15. 项目地址: https://gitcode.com/gh_mirrors/do/downr1n 当你的iPhone因系统升级后出现卡顿、耗电异常&#xff0…...

百川2-13B-4bits量化模型实战教程:4bit NF4压缩原理+WebUI部署+推理加速三合一

百川2-13B-4bits量化模型实战教程:4bit NF4压缩原理WebUI部署推理加速三合一 1. 引言:当大模型遇见消费级显卡 如果你曾经对大语言模型动过心,但一看到动辄几十GB的显存需求就望而却步,那么今天这篇文章就是为你准备的。 想象一…...

电力系统暂态稳定性:Matlab 编程与 Simulink 仿真探索

电力系统暂态稳定性Matlab编程/ Simulink仿真 单机无穷大系统发生各类(三相短路,单相接地,两相接地,两相相间短路)等短路故障,各类(单相断线,两相断线,三相断线&#xff…...

GB28181 SIP信令全流程调试笔记:从心跳保活、发起推流到结束推流的完整报文分析与Java实现

GB28181 SIP信令全流程实战解析:心跳保活、推流控制与Java实现深度剖析 在视频监控与智能安防领域,GB28181协议已经成为设备互联互通的国家标准。作为协议核心的SIP信令交互,其稳定性和正确性直接关系到整个视频监控系统的可靠性。本文将带您…...

Qwen2.5-VL-7B-Instruct与嵌入式系统集成:边缘AI解决方案

Qwen2.5-VL-7B-Instruct与嵌入式系统集成:边缘AI解决方案 想象一下,一个安装在工厂流水线旁的摄像头,不仅能实时“看见”传送带上的零件,还能立刻“理解”哪个零件有划痕、哪个标签贴歪了,甚至能“告诉”机械臂下一步…...

LightRAG深度解析:如何通过双级检索与图结构优化RAG系统性能?

1. LightRAG如何解决传统RAG的痛点 如果你用过传统的RAG(检索增强生成)系统,肯定遇到过这样的场景:明明数据库里有相关资料,但系统就是找不到关键信息;或者检索结果虽然相关,但缺乏上下文关联性…...

微生物组与代谢组联合分析:手把手教你用R语言绘制高颜值相关性热图(附完整代码)

微生物组与代谢组联合分析:用R语言打造专业级相关性热图 在生物信息学研究中,微生物组与代谢组的联合分析正成为揭示宿主-微生物互作机制的重要工具。相关性热图作为直观展示两组学数据关联性的可视化手段,能帮助研究者快速识别关键微生物与代…...

解锁MT7981潜能:OpenWrt 23.05下HC-G80双WAN口叠加与故障转移实战

1. 认识MT7981与HC-G80的硬件潜力 MT7981这颗芯片最近在路由器圈子里挺火的,作为联发科Filogic 820系列的中端方案,它最大的特点就是双核A53 1.3GHz CPU加上硬件级NAT加速。我实测过好几款搭载这个芯片的路由器,发现它的转发性能确实比同价位…...

永磁同步电机基于SMC的SMO无传感器控制:速度环的新变革

本仿真才用滑膜控制器替换速度环控制器, 永磁同步电机基于smc的smo无传感器控制。在永磁同步电机(PMSM)的控制领域,一直以来人们都在不断探索更高效、精确的控制策略。今天咱们聊聊基于滑膜控制器(SMC)替换…...

别再直接拔电源了!聊聊Ubuntu里shutdown、halt、reboot这几个命令到底有啥区别

别再直接拔电源了!深入解析Ubuntu关机命令的底层逻辑与最佳实践 每次看到有人直接按下电源键强制关闭Ubuntu系统,我的心脏都会漏跳一拍。这就像在高速行驶时突然拉手刹——数据可能丢失,文件系统可能损坏,而这一切本可以通过几个简…...

InternLM2-Chat-1.8B与Dify平台集成:快速构建AI智能体应用

InternLM2-Chat-1.8B与Dify平台集成:快速构建AI智能体应用 最近在折腾AI应用开发的朋友,可能都有过这样的体验:好不容易在星图GPU平台上部署了一个不错的模型,比如InternLM2-Chat-1.8B,效果也调得差不多了&#xff0c…...

3D物体检测新突破:FSHNet如何用SlotFormer解决长距离交互难题?

3D物体检测新突破:FSHNet如何用SlotFormer解决长距离交互难题? 在自动驾驶和机器人感知领域,3D物体检测技术正经历着从密集架构向稀疏架构的范式转变。传统稠密检测器虽然性能稳定,但随着检测距离的扩展,其计算成本呈指…...

别再死记硬背真值表了!用Simulink亲手搭建一个SR触发器,理解双稳态存储的底层逻辑

用Simulink亲手搭建SR触发器:从零理解双稳态存储的工程逻辑 记得第一次在数字电路课本上看到SR触发器的真值表时,那种困惑感至今难忘。S、R、Q、Q这些符号在纸上跳来跳去,而"双稳态"、"锁存"这些概念就像天书一样抽象。直…...

三分钟上手Kimi CLI:让AI成为你的终极命令行伙伴

三分钟上手Kimi CLI:让AI成为你的终极命令行伙伴 【免费下载链接】kimi-cli Kimi CLI is your next CLI agent. 项目地址: https://gitcode.com/GitHub_Trending/ki/kimi-cli 你是否厌倦了记忆复杂的Linux命令?是否希望有一个智能助手帮你完成代码…...

效率提升:基于快马生成ansible脚本,批量自动化部署mac版openclaw

效率提升:基于快马生成Ansible脚本,批量自动化部署Mac版OpenClaw 最近团队需要为所有开发人员的Mac设备统一部署OpenClaw环境,手动一台台安装不仅耗时,还容易因为操作差异导致环境不一致。为了解决这个问题,我尝试用I…...

Vue3项目如何在信创环境下跑起来?保姆级配置指南(含火狐52.3适配)

Vue3项目信创环境全适配实战:从低版本火狐到麒麟OS的完整解决方案 信创环境下的前端开发就像在迷宫中寻找出口——你永远不知道下一个转角会遇到什么版本的浏览器。最近接手了一个国企内部系统升级项目,客户现场清一色的麒麟操作系统搭配火狐52.3浏览器&…...