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

由数据范围反推算法复杂度以及算法内容

一般ACM或者笔试题的时间限制是1秒或2秒。
在这种情况下,C++代码中的操作次数控制在 1 0 7 ∼ 1 0 8 10^7\sim10^8 107108为最佳。

下面给出在不同数据范围下,代码的时间复杂度和算法该如何选择:

  1. n ≤ 30 n\leq30 n30,指数级别, d f s + dfs+ dfs+剪枝,状态压缩 d p dp dp
  2. n ≤ 100 ⇒ O ( n 3 ) n\leq100\rArr O(n^3) n100O(n3) f l o y d floyd floyd d p dp dp,高斯消元;
  3. n ≤ 1000 ⇒ O ( n 2 ) n\leq1000\rArr O(n^2) n1000O(n2) O ( n 2 l o g n ) O(n^2logn) O(n2logn) d p dp dp,二分,朴素版 D i j k s t r a Dijkstra Dijkstra,朴素版 P r i m Prim Prim B e l l m a n − F o r d Bellman-Ford BellmanFord
  4. n ≤ 10000 ⇒ O ( n ∗ x ) n\leq10000\rArr O(n*\sqrt{x}) n10000O(nx ),块状链表、分块、莫队;
  5. n ≤ 100000 ⇒ O ( n l o g n ) ⇒ n\leq100000\rArr O(nlogn)\rArr n100000O(nlogn),各种 s o r t sort sort,线段树、树状数组、 s e t / m a p set/map set/map h e a p heap heap、拓扑排序、 d i j k s t r a + h e a p dijkstra+heap dijkstra+heap p r i m + h e a p prim+heap prim+heap K r u s k a l Kruskal Kruskal s p f a spfa spfa、求凸包、求半平面交、二分、 C D Q CDQ CDQ分治、整体二分、后缀数组、树链剖分、动态树;
  6. n ≤ 1000000 ⇒ O ( n ) n\leq1000000\rArr O(n) n1000000O(n),以及常数较小的 O ( n l o g n ) O(nlogn) O(nlogn)算法 ⇒ \rArr 单调队列、 h a s h hash hash、双指针扫描、 B F S BFS BFS、并查集、 k m p kmp kmp A C AC AC自动机,常数比较小的 O ( n l o g n ) O(nlogn) O(nlogn)的做法: s o r t sort sort、树状数组、 h e a p heap heap d i j k s t r a dijkstra dijkstra s p f a spfa spfa
  7. n ≤ 10000000 ⇒ O ( n ) n\leq10000000\rArr O(n) n10000000O(n),双指针扫描、 k m p kmp kmp A C AC AC自动机、线性筛素数;
  8. n ≤ 1 0 9 ⇒ O ( n ) n\leq10^9\rArr O(\sqrt{n}) n109O(n ),判断质数;
  9. n ≤ 1 0 18 ⇒ O ( l o g n ) n\leq10^{18}\rArr O(logn) n1018O(logn),最大公约数,快速幂,数位DP;
  10. n ≤ 1 0 1000 ⇒ O ( ( l o g n ) 2 ) n\leq10^{1000}\rArr O((logn)^2) n101000O((logn)2),高精度加减乘除;
  11. n ≤ 1 0 100000 ⇒ O ( l o g k × l o g l o g k ) n\leq10^{100000}\rArr O(logk\times loglogk) n10100000O(logk×loglogk) k k k表示位数,高精度加减, F F T / N T T FFT/NTT FFT/NTT
http://www.lryc.cn/news/312112.html

相关文章:

  • js监听F11触发全屏事件
  • Seata 2.x 系列【1】专栏导读
  • fly-barrage 前端弹幕库(3):滚动弹幕的设计与实现
  • Mysql面试总结
  • 【深圳五兴科技】Java后端面经
  • 画图(ccf201409-2)解题思路
  • 蓝桥杯刷题(一)
  • 设计模式:策略模式 ⑥
  • 数据结构从入门到精通——顺序表
  • 001-CSS-水平垂直居中布局
  • 【[STM32]标准库-自定义BootLoader】
  • Spring Boot项目中不使用@RequestMapping相关注解,如何动态发布自定义URL路径
  • Vue中有哪些优化性能的方法?
  • Python pandas遍历行数据的2种方法
  • Spring之@Transactional源码解析
  • 第三届国际亲子游泳学术峰会,麒小佑为亲游行业提供健康解决方案
  • Python光速入门 - Flask轻量级框架
  • C/C++ 说说引用这玩仍是干啥的
  • swoole
  • kubectl基础命令详解
  • collection的遍历方式
  • SpringBoot中@Async使用注意事项
  • IEEE 802.11 RTS/CTS/BA/Management
  • 【风格迁移】对比度保持连贯性损失 CCPL:解决图像局部失真、视频帧间的连贯性和闪烁
  • 【C++】贪心算法
  • 记一次dockerfile无法构建问题追溯
  • React使用 useImperativeHandle 自定义暴露给父组件的实例方法(包括依赖)
  • yolov5v7v8目标检测增加计数功能--免费源码
  • JPA常见异常 JPA可能抛出的异常
  • Dockerfile的艺术:构建高效容器镜像的指令详解与实战指南