由数据范围反推算法复杂度以及算法内容
作者: yxc, 2018-09-10 22:27:18 , 阅读 21650
一般 ACM 或者笔试题的时间限制是 1 秒或 2 秒。
在这种情况下,C++ 代码中的操作次数控制在 为最佳。
下面给出在不同数据范围下,代码的时间复杂度和算法该如何选择:
- , 指数级别, dfs + 剪枝,状态压缩 dp
- => ,floyd,dp,高斯消元
- => ,,dp,二分,朴素版 Dijkstra、朴素版 Prim、Bellman-Ford
- => ,块状链表、分块、莫队
- => => 各种 sort,线段树、树状数组、set/map、heap、拓扑排序、dijkstra+heap、prim+heap、spfa、求凸包、求半平面交、二分、CDQ 分治、整体二分
- => , 以及常数较小的 算法 => 单调队列、 hash、双指针扫描、并查集,kmp、AC 自动机,常数比较小的 的做法:sort、树状数组、heap、dijkstra、spfa
- => ,双指针扫描、kmp、AC 自动机、线性筛素数
- => ,判断质数
- => ,最大公约数,快速幂
- => ,高精度加减乘除
- => $O(logk \times loglogk),k 表示位数 $,高精度加减、FFT/NTT
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 笑枕晚风の小站!
评论