Acwing《算法基础课》第7章 时空复杂度分析

    科技2024-04-18  15

    Acwing《算法基础课》第7章 时空复杂度分析

    文章目录

    Acwing《算法基础课》第7章 时空复杂度分析


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

    C++一般 1 1 1s能计算 1 0 7 10^7 107~ 1 0 8 10^8 108次,在这种情况下,C++代码中的操作次数控制在 1 0 7 10^7 107为最佳

    在不同数据范围下,代码的时间复杂度和算法的选择技巧如下:

    n ≤ 30 n\le 30 n30,指数级别 dfs+剪枝状态压缩dp n ≤ 100 n \le 100 n100 O ( n 3 ) O(n^3) O(n3) floyddp n ≤ 1000 n \le 1000 n1000 O ( n 2 ) O(n^2) O(n2) O ( n 2 log ⁡ n ) O(n^2 \log n) O(n2logn) dp二分朴素版Dijkstra朴素版PrimBellman-Ford n ≤ 10000 n \le 10000 n10000 O ( n n ) O(n\sqrt{n}) O(nn ) 块状链表分块莫队 n ≤ 1 0 5 n \le 10^5 n105 O ( n log ⁡ n ) O(n\log n) O(nlogn) 各种排序算法线段树树状数组set/mapheap拓扑排序堆优化Dijkstra堆优化PrimSPFA求凸包求半平面交二分 n ≤ 1 0 6 n \le 10^6 n106 O ( n ) O(n) O(n) Hash双指针扫描并查集KMPAC自动机 常数较小的 O ( n log ⁡ n ) O(n\log n) O(nlogn) 排序树状数组heapDijkstraSPFA n ≤ 1 0 7 n \le 10^7 n107 O ( n ) O(n) O(n) 双指针扫描KMPAC自动机线性筛素数 n ≤ 1 0 9 n \le 10^9 n109 O ( n ) O(\sqrt{n}) O(n ) 判断质数 n ≤ 1 0 18 n \le 10^{18} n1018 O ( log ⁡ n ) O(\log n) O(logn) 最大公约数快速幂 n ≤ 1 0 1000 n \le 10^{1000} n101000 O ( ( log ⁡ n ) 2 ) O((\log n)^2) O((logn)2) 高精度加减乘除 n ≤ 1 0 100000 n \le 10^{100000} n10100000 O ( log ⁡ n × log ⁡ log ⁡ n ) O(\log n\times \log\log n) O(logn×loglogn) 高精度加减FFT/NTT

    小技巧

    log ⁡ 2 1 0 n = 3 n \log_2 10^n =3n log210n=3n64MB至多开1600万个int

    P.S. 部分内容来自y总的由数据范围反推算法复杂度以及算法内容 如果大家有兴趣,可以去Acwing《算法基础课》看看 我在Acwing也分享了一份,欢迎去围观

    Processed: 0.011, SQL: 8