【阶段1】分别适应不同时空的各种算法

    科技2024-04-15  70

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

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

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

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

    n≤30,指数级别 dfs+剪枝状态压缩dpn≤100,O(n3) floyddpn≤1000,O(n2),O(n2logn) dp二分朴素版Dijkstra朴素版PrimBellman-Fordn≤10000,O(n√n) 块状链表分块莫队n≤105,O(nlogn) 各种排序算法线段树树状数组set/mapheap拓扑排序堆优化Dijkstra堆优化PrimSPFA求凸包求半平面交二分n≤106 O(n) Hash双指针扫描并查集KMPAC自动机常数较小的O(nlogn) 排序树状数组heapDijkstraSPFAn≤107,O(n) 双指针扫描KMPAC自动机线性筛素数n≤109,O(√n) 判断质数n≤1018,O(logn) 最大公约数快速幂n≤101000,O((logn)2) 高精度加减乘除n≤10100000,O(logn×loglogn) 高精度加减FFT/NTT

    小技巧

    log210n=3n64MB至多开1600万个int
    Processed: 0.017, SQL: 8