如何由数据范围反推算法复杂度以及算法内容(转载)

写在前面:大家好!我是ACfun,我的昵称来自两个单词Accepted和fun。我是一个热爱ACM的蒟蒻。这篇博客来详解一下如何由题目的数据范围反推算法的时间复杂度以及算法的内容。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正,感谢大家的不吝赐教。我的唯一博客更新地址是:https://ac-fun.blog.csdn.net/。非常感谢大家的支持。一起加油,冲鸭!
 用知识改变命运,用知识成就未来!加油 (ง •̀o•́)ง (ง •̀o•́)ง

文章目录
评测机1秒最多可以运行几次
如何根据数据范围判断大致时间复杂度
评测机1秒最多可以运行几次
 一般评测机一秒最多可以运行 一亿次 即 10^8次。而一般编程竞赛都会将时间限制为 1000ms 即 1s。在这种情况下,C++ 代码的操作次数控制在 10^7 为最佳。我们可以根据题目给出的数据范围来大致的判断一下对于该题我们使用的算法的时间复杂度大致为多少,也就帮助我们更快的找到可以用什么算法来解决该问题,更快更好的完成题目。

如何根据数据范围判断大致时间复杂度
 下面来给出不同数据范围下应该如何选择算法的时间复杂度以及算法:

数据范围 算法时间复杂度 可选择算法
n ≤ 30 指数级别的算法 暴力搜索、dfs+减枝、状态压缩dp
n ≤ 100 O(n3) floyd,dp
n ≤ 1000 O(n2),O(n2logn) dp,二分,朴素版Dijkstra、朴素版Prim、Bellman-Ford
n ≤ 10000 O(n∗n−−√
n

) 块状链表、分块、莫队
n ≤ 100000 O(nlogn) 各种sort,线段树、树状数组、set/map、heap、拓扑排序、dijkstra+heap、prim+heap、spfa、求凸包、求半平面交、二分
n≤1000000 O(n) , 以及常数较小的 O(nlogn) 算法 hash、双指针扫描、并查集,kmp、AC自动机,常数比较小的 O(nlogn)O(nlogn) 的做法:sort、树状数组、heap、dijkstra、spfa
n≤10000000 O(n) 双指针扫描、kmp、AC自动机、线性筛素数
n≤109 O(n−−√
n

) 判断质数
n≤1018 O(logn) 最大公约数,快速幂
n≤101000 O((logn)2) 高精度加减乘除
n≤10100000 O(logn×loglogn) 高精度加减、FFT/NTT
参考文档:由数据范围反推算法复杂度以及算法内容

原文链接:https://blog.csdn.net/qq_41575507/article/details/108228819?utm_medium=distribute.pc_feed.none-task-blog-vip_agree_hot-1.nonecase&depth_1-utm_source=distribute.pc_feed.none-task-blog-vip_agree_hot-1.nonecase

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值