ACM时间复杂度及算法的选择分析

一般ACM竞赛C/C++的时间限制是1s,因此可以通过题目数据来推断该题所使用的算法。

以C/C++为例,算法的操作次数在10710^7107左右合适,最多不超过10810^8108,O(n)O(n)O(n)的极限就在10810^8108左右。

算法时间复杂度比较
O(1)O(1)O(1) < O(logn)O(logn)O(logn) < O(n)O(n)O(n) < O(nlogn)O(nlogn)O(nlogn) < O(n2)O(n^2)O(n2) < O(n3)O(n^3)O(n3) < O(2n)O(2^n)O(2n) < O(n!)O(n!)O(n!)

根据题目所给数据范围选择算法

n<200n<200n<200, 可以选择复杂度为O(n3)O(n^3)O(n3)的算法。例:dp,floyd
n<5000n<5000n<5000,可以选择复杂度为O(n2)O(n^2)O(n2)的算法。例:dp,Dijkstra。朴素版Prim
n<1e6n<1e6n<1e6,可以选择复杂度为O(nlogn)O(nlogn)O(nlogn)或者(O(n2logn)(O(n^2logn)(O(n2logn)的算法。例:sort,线段树,树状数组,set,mmap,spfa,凸包,二分
n<1e7n<1e7n<1e7,可以选择复杂度为O(n)O(n)O(n)的算法。例:哈希,双指针,kmp,AC自动机。部分sort,树状数组,spfa
n<1e8n<1e8n<1e8,可以选择复杂度为O(n)O(n)O(n)的算法。例:双指针,kmp,AC自动机,线性筛
n<1e9n<1e9n<1e9,可以选择复杂度为O(n)O(\sqrt{n})O(n​)的算法。例:判断质数
n<1e18n<1e18n<1e18,可以选择复杂度为O(logn)O(logn)O(logn)的算法。例:二分,欧几里得算法,幂运算
以上仅为参考,实际做题还需考虑具体数据细节。

ACM时间复杂度及算法的选择分析相关推荐

  1. 排序算法 | 直接选择排序,算法的图解、实现、复杂度和稳定性分析

    排序算法 | 直接选择排序,算法的图解.实现.复杂度和稳定性分析 目录 1.直接选择排序的原理 2.图解直接选择排序 3.算法代码实现 4.算法复杂度分析.稳定性分析 直接选择排序 1.直接选择排序的 ...

  2. 排序算法:简单选择排序算法实现及分析

    简单选择排序算法介绍 简单选择排序(Simple Selection Sort)就是通过n-1次关键字排序之间的比较,从n-i+1个记录中选择关键字最小的记录,并和第i(1<=i<=n)记 ...

  3. 算法的复杂性分析(一)---时间复杂度

    只需要记住下面几点即可,不想看下面的可以直接记住下面: (1)用O(n)来体现算法时间复杂度的记法被称作大O表示法 (2)评估一个算法都是直接评估它的最坏的复杂度(渐进函数法). (3)O(1)< ...

  4. c语言循环链表约瑟夫问题的时间复杂度,用单向循环链表解决约瑟夫问题算法优劣性分析.doc...

    用单向循环链表解决约瑟夫问题算法优劣性分析 用单向循环链表解决约瑟夫问题算法优劣性分析 摘要: 首先由简单问题引入约瑟夫问题,然后用单向循环链表解决约瑟夫问题,最后对模拟方法及数学方法的优劣性进行分析 ...

  5. 【算法设计与分析】16 分治策略:快速排序(快速排序的时间复杂度计算)

    上一篇文章学习了:[算法设计与分析]15 分治策略:芯片测试 文章目录 1. 快速排序的基本思想 1.2 时间复杂度的计算 1.21 最坏情况时间复杂度计算 1.22 最好情况时间复杂度 1.23 平 ...

  6. 【数据结构】算法的渐进分析-渐进时间复杂度

     算法的渐进分析(asymptotic algorithm analysis)简称算法分析.算法分析直接与它所求解的问题的规模 n 有关,因此,通常将问题规模作为分析的参数,求算法的时间和空间开销与问 ...

  7. 算法设计与分析——顺序统计量:期望为线性时间的选择算法

    分类目录:<算法设计与分析>总目录 相关文章: · 顺序统计量:最大值与最小值 · 顺序统计量:期望为线性时间的选择算法 · 顺序统计量:最坏情况为线性时间的选择算法 选择算法指的是在一个 ...

  8. 程振波 算法设计与分析_算法设计与分析

    本书按照教育部*制定的计算机科学与技术专业规范的教学大纲编写,努力与国际计算机学科的教学要求接轨.强调 算法 与 数据结构 之间密不可分的联系,因而强调融数据类型与定义在该类型上的运算于一体的抽象数据 ...

  9. 计算机算法设计与分析二--分治

    1.如果问题和以下数据结构相关,那么把他们分成子问题相对容易 n维数组 矩阵 n个元素的集合 树 有向无环图 通用图 2.分治算法一般应用于可以分成子问题的问题 实例: 一.排序问题:对一个n维数组排 ...

  10. 哈工大威海算法设计与分析_计算机算法设计与分析第一章 算法概述

    晓强Deep Learning的读书分享会,先从这里开始,从大学开始.大家好,我是晓强,计算机科学与技术专业研究生在读.我会不定时的更新我的文章,内容可能包括深度学习入门知识,具体包括CV,NLP方向 ...

最新文章

  1. minhash算法检索相似文本_文本去重算法:Minhash/Simhash/Klongsent
  2. Apache - AH00341
  3. English trip -- VC(情景课)1 D
  4. 取消Exchange数据库的自动分配功能
  5. python grid用法_Python numpy.mgrid函数方法的使用
  6. 屏幕编程 F4的帮组用法
  7. JupyterLab 配置远程python、R环境(与Jupyter兼容)
  8. [C++] 用Xcode来写C++程序[3] Constants
  9. Android开发学习笔记:浅谈ToggleButton
  10. 微信小程序点击拨打电话,添加联系人,在线客服
  11. 豆瓣app签名sig
  12. YAMAHA XJR简易说明[网络]
  13. 关于cnt++和++cnt
  14. python入门系列(4) -- python常见应用
  15. 用c++随机生成10小学生算术题的课设
  16. html meta标签的常用写法
  17. 跳过wifi认证直接上网
  18. 扫描中如何实现自动纠偏
  19. 以图搜图新体验:图片谷歌和百度识图
  20. 叙事的变迁:从《街》到《428》

热门文章

  1. PMP试题 | 每日一练,快速提分
  2. Linux之校准服务器时间
  3. nsis检测vc2013运行环境vcredist_x86.exe是否已经安装
  4. IE降级命令(以IE11为例)_原水_新浪博客
  5. SPC软件:全程监控食品质量
  6. 极光im php,极光IM- 微信小程序 SDK - 极光文档
  7. 在线解析下载微软官方商店离线安装包
  8. JQuery Easyui/TopJUI 多表头创建
  9. Git可视化下载及团队协作及diff工具
  10. Fineui 添加打印控件