当前位置: 首页 > news >正文

acwing算法基础之时空复杂度分析

目录

  • 1 基础知识
  • 2 模板
  • 3 工程化

1 基础知识

(一)
由数据范围反推算法。

C++中题目给出的要求时间是1秒或2秒计算出结果,而1秒内C++可以执行 1 0 7 ∼ 1 0 8 10^7 \sim 10^8 107108次操作。故需要把时间复杂度控制在 1 0 8 10^8 108以内。

给定数目范围 n n n,有如下情况,

  1. n ≤ 30 n\leq 30 n30时,指数级别,可以考虑的算法有:dfs+剪枝,状态压缩dp。
  2. n ≤ 1 0 2 n \leq 10^2 n102时,可以接受的最大的时间复杂度为 O ( n 3 ) O(n^3) O(n3),那么可以考虑的算法有:floyd,dp。
  3. n ≤ 1 0 3 n\leq 10^3 n103时,可以接受的最大的时间复杂度为 O ( n 2 l o g n ) O(n^2logn) O(n2logn),那么可以考虑的算法有:dp,二分。
  4. n ≤ 1 0 4 n \leq 10^4 n104时,可以接受的最大的时间复杂度为 O ( n n ) O(n\sqrt{n}) O(nn ),那么可以考虑的算法有:块状链表。
  5. n ≤ 1 0 5 n\leq 10^5 n105时,可以接受的最大的时间复杂度为 O ( n l o g n ) O(nlogn) O(nlogn),那么可以考虑的算法有:排序算法(快速排序、归并排序、堆排序),线段树,树状数组,set/map,heap,dijkstra + heap,spfa,求凸包,求半平面交,二分。
  6. n ≤ 1 0 6 n \leq 10^6 n106时,可以接受的最大的时间复杂度为常数较小的 O ( n l o g n ) O(nlogn) O(nlogn),那么可以考虑的算法有:hash,双指针扫描,kmp,AC自动机,排序算法(快速排序、归并排序、堆排序),树状数组,heap,dijkstra,spfa。
  7. n ≤ 1 0 7 n\leq 10^7 n107时,可以接受的最大的时间复杂度为 O ( n ) O(n) O(n),那么可以考虑的算法有:双指针扫描,kmp,AC自动机,线性筛素数。
  8. n ≤ 1 0 9 n\leq 10^9 n109时,可以接受的最大的时间复杂度为 O ( n ) O(\sqrt{n}) O(n ),那么可以考虑的算法有:判断质数。
  9. n ≤ 1 0 18 n\leq 10^{18} n1018时,可以接受的最大的时间复杂为 O ( l o g n ) O(logn) O(logn),那么可以考虑的算法有:最大公约数。

(二)
计算时间复杂度的小技巧,有

  • 看循环,有几重循环就是n的几次方的时间复杂度。
  • 并查集的时间复杂度是 O ( n l o g n ) O(nlogn) O(nlogn)
  • 动态规划问题的计算量 = 状态的数量 * 状态转移的计算量。

2 模板

暂无。。。

3 工程化

暂无。。。

相关文章:

  • k8s(三): 基本概念-ReplicaSet与Deployment
  • 深度学习 -- 神经网络
  • shell 脚本计算距离最近的坐标
  • 1.0 十大经典排序算法
  • 基于运算放大器的电压采集电路
  • Maven安装
  • 计算机组成学习-计算机系统概述总结
  • 一篇带你串通数据结构
  • python+pytest接口自动化(6)-请求参数格式的确定
  • 数据结构与算法-静态查找表
  • Fiddler抓包工具之高级工具栏中的重定向AutoResponder的用法
  • 【网络安全技术】实体认证技术Kerberos
  • Hdoop学习笔记(HDP)-Part.02 核心组件原理
  • 【linux】信号——信号保存+信号处理
  • go使用aes加密算法
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • ES10 特性的完整指南
  • Java小白进阶笔记(3)-初级面向对象
  • k个最大的数及变种小结
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • mysql外键的使用
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • React系列之 Redux 架构模式
  • Redux 中间件分析
  • Selenium实战教程系列(二)---元素定位
  • swift基础之_对象 实例方法 对象方法。
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • Vue2.0 实现互斥
  • 初探 Vue 生命周期和钩子函数
  • 从输入URL到页面加载发生了什么
  • 机器学习学习笔记一
  • 批量截取pdf文件
  • 实现简单的正则表达式引擎
  • 突破自己的技术思维
  • 用简单代码看卷积组块发展
  • 智能合约开发环境搭建及Hello World合约
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 移动端高清、多屏适配方案
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (3)llvm ir转换过程
  • (C语言)二分查找 超详细
  • (done) 两个矩阵 “相似” 是什么意思?
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .aanva
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .net 使用ajax控件后如何调用前端脚本
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • @TableId注解详细介绍 mybaits 实体类主键注解