由数据范围反推算法复杂度以及算法内容

1.时间复杂度(下)

一般ACM或者笔试题的时间限制是1秒或2秒。

在这种情况下,C++代码中的操作次数控制在 1 0 7 ∼ 1 0 8 10^7 \sim 10^8 107∼108 为最佳。

下面给出在不同数据范围下,代码的时间复杂度和算法该如何选择:

n ≤ 30 n \le 30 n≤30, 指数级别, dfs+剪枝,状态压缩dp

n ≤ 100 n \le 100 n≤100 => O ( n 3 ) O(n^3) O(n3),floyd,dp,高斯消元

n ≤ 1000 n \le 1000 n≤1000 => O ( n 2 ) O(n^2) O(n2), O ( n 2 l o g n ) O(n^2logn) O(n2logn),dp,二分,朴素版Dijkstra、朴素版Prim、Bellman-Ford

n ≤ 10000 n \le 10000 n≤10000 => O ( n ∗ n ) O(n * \sqrt n) O(n∗n ),块状链表、分块、莫队

n ≤ 100000 n \le 100000 n≤100000 => O ( n l o g n ) O(nlogn) O(nlogn) => 各种sort,线段树、树状数组、set/map、heap、拓扑排序、dijkstra+heap、prim+heap、Kruskal、spfa、求凸包、求半平面交、二分、CDQ分治、整体二分、后缀数组、树链剖分、动态树

n ≤ 1000000 n \le 1000000 n≤1000000 => O ( n ) O(n) O(n), 以及常数较小的 O ( n l o g n ) O(nlogn) O(nlogn) 算法 => 单调队列、 hash、双指针扫描、BFS、并查集,kmp、AC自动机,常数比较小的 O ( n l o g n ) O(nlogn) O(nlogn) 的做法:sort、树状数组、heap、dijkstra、spfa

n ≤ 10000000 n \le 10000000 n≤10000000 => O ( n ) O(n) O(n),双指针扫描、kmp、AC自动机、线性筛素数

n ≤ 1 0 9 n \le 10^9 n≤109 => O ( n ) O(\sqrt n) O(n ),判断质数

n ≤ 1 0 18 n \le 10^{18} n≤1018 => O ( l o g n ) O(logn) O(logn),最大公约数,快速幂,数位DP

n ≤ 1 0 1000 n \le 10^{1000} n≤101000 => O ( ( l o g n ) 2 ) O((logn)^2) O((logn)2),高精度加减乘除

n ≤ 1 0 100000 n \le 10^{100000} n≤10100000 => O ( l o g k × l o g l o g k ) , k 表示位数 O(logk \times loglogk),k表示位数 O(logk×loglogk),k表示位数,高精度加减、FFT/NTT

相关推荐
小poop6 分钟前
轮转数组:从暴力到最优,一题掌握算法复杂度分析
数据结构·算法·leetcode
樱桃读报僵尸29 分钟前
说说 LLMRouter,Agent 执行过程中怎么动态的选择 LLM
算法
gis开发之家1 小时前
《Vue3 从入门到大神40篇》Vue3 源码详解(十):diff 算法全解析 —— 为什么 Vue3 比 Vue2 更快?
javascript·算法·typescript·前端框架·vue3·vue3源码
进击的丸子2 小时前
虹软人脸服务器SDK-C++语言Demo实操指南
后端·算法
兰令水2 小时前
hot100【acm版】【2026.7.25/26打卡-java版本】
java·算法·排序算法
音视频工程实战3 小时前
PromptQL 新手入门与实战指南
数据库·sql·算法
wabs6663 小时前
关于图论【卡码网104.建造最大岛屿的思考】
数据结构·算法·图论
玖玥拾3 小时前
LeetCode 27 移除元素
算法·leetcode
冻柠檬飞冰走茶4 小时前
PTA基础编程题目集 7-15 计算圆周率(C语言实现)
c语言·开发语言·数据结构·算法
问商十三载4 小时前
AI 引擎生成式优化两种思路怎么选?2026 对比分析附选型方法
人工智能·算法