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 工程化

暂无。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/192149.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Day48力扣打卡

打卡记录 最大化城市的最小电量(二分前缀和差分数组贪心) 链接 class Solution:def maxPower(self, stations: List[int], r: int, k: int) -> int:n len(stations)sum list(accumulate(stations, initial0))for i in range(n):stations[i] sum[…

vscode插件离线下载

离线下载插件地址:https://marketplace.visualstudio.com/VSCode

elasticsearch 内网下如何以离线的方式上传任意的huggingFace上的NLP模型(国内闭坑指南)

es自2020年的8.x版本以来,就提供了机器学习的能力。我们可以使用es官方提供的工具eland,将hugging face上的NLP模型,上传到es集群中。利用es的机器学习模块,来运维部署管理模型。配合es的管道处理,来更加便捷的处理数据…

PX4 Bug汇总

个人纪录,不喜勿喷~ 运行仿真 gazebo 没有任何反应 可能是上一次gazebo以外退出,后台还有运行,使用 ps -aux查看,如果有 gzserver Tool 相关的任务,使用 kill -9 杀死它。 例如 ps -aux 输出如下 wind 2919…

css设计文本样式 前端开发入门笔记(十二)

CSS (Cascading Style Sheets) 是一种标记语言,用于描述 HTML 或 XML(包括如 SVG、MathML 等派生语言)文档的呈现。以下是一些基本的 CSS 文本样式: 字体样式:你可以使用 font-family 属性来改变字体类型,…

vcomp140.dll是什么意思?vcomp140.dll缺失怎么修复的五个方法

在电脑使用过程中,我们常常会遇到一些错误提示,其中之一就是“由于找不到vcomp140.dll无法继续执行代码”。这个错误提示通常出现在运行某些程序时,给使用者带来了很大的困扰。那么,为什么会出现这个错误呢?又该如何解…

云原生高级--shell自动化脚本备份

shell自动化脚本实战---备份 数据库备份: 结合计划任务 MySQL、 Oracle 网站备份: tar,异地保存--ftp、rsync 一、数据库备份 1.利用自带工具mysqldump 实现数据库分库备份 分库备份: 1> 如何获取备份的…

Linux 定时关机 crontab

目录 前言添加定时任务定时关机定时重启其它/bin/sh: shutdown: 未找到命令 参考 前言 CentOS Linux release 7.9.2009 (Core) 添加定时任务 shell> crontab -ecrontab -e 编辑当前用户的定时任务crontab -e 使用vi编辑器 0 2 * * * /sbin/shutdown >> /data/shut…

可视化数据库管理客户端:Adminer

简介:Adminer(前身为phpMinAdmin)是一个用PHP编写的功能齐全的数据库管理工具。与phpMyAdmin相反,它由一个可以部署到目标服务器的文件组成。Adminer可用于MySQL、PostgreSQL、SQLite、MS SQL、Oracle、Firebird、SimpleDB、Elast…

认知觉醒(二)

认知觉醒(二) 内观自己,摆脱焦虑 第一章 大脑——一切问题的起源 第一节 大脑:重新认识你自己 我猜很多人并不真正了解自己,甚至从未了解过,所以才会对自身的各种问题困惑不已。这里我说的“自己”,特指自己的大…

轻量封装WebGPU渲染系统示例<40>- 多层材质的Mask混合(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/MaskTextureEffect.ts 当前示例运行效果: 两层材质效果: 三层材质效果: 此示例基于此渲染系统实现,当前示例TypeScript源码如下: export c…

2243:Knight Moves

文章目录 题目描述思路1. DFS2. BFS3. 动态规划 解题方法1. DFS2. BFS3. 动态规划 题目描述 题目链接 翻译如下: 注:骑士移动是和象棋里的马一样走的是日字型 你的一个朋友正在研究旅行骑士问题 (TKP),你要找到最短的…

TCP与UDP的区别

TCPUDP连接传送数据前要先建立连接无需建立连接直接传送数据服务对象一对一一对多、多对一、多对多可靠性可靠交付(保证数据包的无差错、不失序、不丢包、不重复)尽最大努力交付,不保证可靠性(但我们可以基于UDP协议实现一个可靠传…

一、Zookeeper基本知识

目录 1、ZooKeeper概述 2、ZooKeeper特性 3、ZooKeeper集群角色 ​​​​​​​1、ZooKeeper概述 Zookeeper是一个分布式协调服务的开源框架。主要用来解决分布式集群中应用系统的一致性问题。 ZooKeeper本质上是一个分布式的小文件存储系统。提供基于类似于文件系统的目录…

web前端之JavaScrip的笔试题

MENU Promise笔试题-02prototype和__proto__的笔试题JavaScript引用类型值值操和运算符优先级比较--笔试原型与原型链--笔试-05作用域-笔试事件队列-笔试题JavaScript之变量提升-笔试题JavaScript之原型链--笔试题 Promise笔试题-02 console.log(1); // 宏仁务 2 setTimeout(_…

[蓝桥杯 2020 省 AB1] 解码

做题前思路: 1.因为是多组输入,又包含字符于是我们可以先定义一个char类型数组arr 2.定义数组的长度:题目说简写(字母加数字)长度不超过100,但原来的长度可能超过100,加上小明不会将连续超过9…

CSS 滚动捕获 scroll-margin

CSS滚动捕获 scroll-margin 非滚动捕获容器语法兼容性 CSS滚动捕获 scroll-margin 设置元素的滚动外边距 非滚动捕获容器 之前在 scroll-padding 中说过如何用 scroll-padding 避免锚点定位时元素贴着容器边缘的问题, 现在我们尝试用 scroll-margin 解决 <body><ma…

如何使用Java进行人工智能开发?

Java作为一门面向对象的编程语言&#xff0c;在人工智能领域也发挥着重要作用。Java可以借助常见的机器学习库&#xff0c;例如TensorFlow和Keras等&#xff0c;进行机器学习和深度学习的开发。下面是使用Java进行人工智能开发的一些步骤和工具。 准备工作 在使用Java进行人工智…

【C/C++指针】指针*与引用的区别

指针变量的值是所指对象的地址&#xff08;准确说是首地址&#xff0c;其类型定义其所指对象的字节长度&#xff09;引用变量的值是所引用对象本身的值 1 初始化 指针变量 可不初始化 且 可以更换指向对象 int *p;//此时是个野指针&#xff0c;该指针变量的值是任意值&#x…

Kubernetes技术与架构-策略

Kubernetes集群提供系统支持的策略&#xff0c;也提供开放接口给第三方定义的策略&#xff0c;这些策略用于可定义的配置文件或者Kubernetes集群的运行时环境&#xff0c;其中包括进程ID数量的申请与限制策略&#xff0c;服务器节点Node内的进程ID的数量限制策略&#xff0c;Po…