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

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

相关推荐
callJJ26 分钟前
从零开始的图论讲解(1)——图的概念,图的存储,图的遍历与图的拓扑排序
java·数据结构·算法·深度优先·图论·广度优先·图搜索算法
脱脱克克1 小时前
2025.4.9 华为机考 第1题-补丁版本升级
python·算法·华为
liuluyang5304 小时前
C语言C11支持的结构体嵌套的用法
c语言·开发语言·算法·编译·c11
勤劳的进取家5 小时前
贪心算法之最小生成树问题
数据结构·python·算法·贪心算法·排序算法·动态规划
牛奶咖啡.8545 小时前
第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 A 组真题
c语言·数据结构·c++·算法·蓝桥杯
亓才孓6 小时前
[leetcode]stack的基本操作的回顾
算法
小美爱刷题6 小时前
力扣DAY46-50 | 热100 | 二叉树:展开为链表、pre+inorder构建、路径总和、最近公共祖先、最大路径和
算法·leetcode·链表
Fanxt_Ja6 小时前
【数据结构】红黑树超详解 ---一篇通关红黑树原理(含源码解析+动态构建红黑树)
java·数据结构·算法·红黑树
永恒迷星.by7 小时前
全球变暖(蓝桥杯 2018 年第九届省赛)
算法
旧时光林7 小时前
蓝桥杯 分解质因数(唯一分解定理)
数据结构·c++·算法·蓝桥杯·模拟·枚举