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

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

文章目录



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


一般 ACM 或者笔试题的时间限制是 1s 或 2s。

在这种情况下,C++ 代码中的操作次数控制在 107∼108 为最佳。

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

(1) n ≤ 30 => 指数级别 => dfs + 剪枝,状态压缩 DP。

(2) n ≤ 100 => O(n3) => Floyd,DP,高斯消元。

(3) n ≤ 1000 => O(n2),O(n2logn) => DP,二分,朴素版 Dijkstra、朴素版 Prim、Bellman-Ford。

(4) n ≤ 10000 => O(n∗√n) => 块状链表、分块、莫队。

(5) n ≤ 100000 => O(nlogn) => 各种 sort,线段树、树状数组、set / map、heap、拓扑排序、Dijkstra + heap、Prim+heap、Kruskal、spfa、求凸包、求半平面交、二分、CDQ分治、整体二分、后缀数组、树链剖分、动态树。

(6) n ≤ 1000000 => O(n),以及常数较小的 O(nlogn) 算法 => 单调队列、 hash、双指针扫描、并查集、KMP、AC自动机;常数比较小的 O(nlogn) 的做法:sort、树状数组、heap、Dijkstra、spfa。

(7) n ≤ 10000000 => O(n) => 双指针扫描、KMP、AC 自动机、线性筛素数。

(8) n ≤ 109 => O(n√) => 判断质数。

(9) n ≤ 1018 => O(logn) => 最大公约数,快速幂,数位 DP。

(10) n ≤ 101000 => O((logn)2) => 高精度加减乘除。

(11) n ≤ 10100000 => O(logk×loglogk) => k 表示位数,高精度加减、FFT / NTT。


二、数据范围


3.png


  • long long 内的最大阶乘20!
  • int 内的最大阶乘12!



三、其他知识点

1. long 和 int 的大小跟系统位数有关

系统位数 long 和 int 的大小
16位系统 long 是 4 字节,int 是 2 字节
32位系统 long 是 4 字节,int 是 4 字节
64位系统 long 是 8 字节,int 是 4 字节


2. memset 常用赋值


  • 头文件 <cstring>
  • memset(f, 0, sizeof(f));
  • (1) 0
  • (2) -1
  • (3) 0x3f(正无穷 1,061,109,567)
  • (4) -0x3f(负无穷 -1,044,266,559)


















相关文章
C4.
|
1月前
|
算法 程序员 C语言
C语言的选择结构与数据算法
C语言的选择结构与数据算法
C4.
18 0
|
2月前
|
机器学习/深度学习 数据采集 搜索推荐
Paper Digest | 突破个性化推荐数据稀疏性:长尾增强的图对比学习算法研究
本文提出了一种新的长尾增强的图对比学习方法(LAGCL),该方法促使模型同时兼顾头部节点与尾部节点之间的知识,并通过长尾增强技术来使模型产出更均匀更准确的节点表征,从而改进基于 GNN 的推荐任务。
|
2天前
|
算法 数据可视化 大数据
圆堆图circle packing算法可视化分析电商平台网红零食销量采集数据
圆堆图circle packing算法可视化分析电商平台网红零食销量采集数据
31 13
|
8天前
|
算法 数据可视化 Python
Python中LARS和Lasso回归之最小角算法Lars分析波士顿住房数据实例
Python中LARS和Lasso回归之最小角算法Lars分析波士顿住房数据实例
13 0
|
9天前
电信公司churn数据客户流失k近邻(knn)模型预测分析
电信公司churn数据客户流失k近邻(knn)模型预测分析
18 0
|
2月前
|
机器学习/深度学习 算法 搜索推荐
【实操】数据扩增:Retinex算法用于图像颜色恢复和对比度增强
【实操】数据扩增:Retinex算法用于图像颜色恢复和对比度增强
32 0
【实操】数据扩增:Retinex算法用于图像颜色恢复和对比度增强
|
2月前
|
算法
MATLAB | 插值算法 | 一维interpl插值法 | 附数据和出图代码 | 直接上手
MATLAB | 插值算法 | 一维interpl插值法 | 附数据和出图代码 | 直接上手
40 0
|
1月前
|
传感器 算法 计算机视觉
基于肤色模型和中值滤波的手部检测算法FPGA实现,包括tb测试文件和MATLAB辅助验证
该内容是关于一个基于肤色模型和中值滤波的手部检测算法的描述,包括算法的运行效果图和所使用的软件版本(matlab2022a, vivado2019.2)。算法分为肤色分割和中值滤波两步,其中肤色模型在YCbCr色彩空间定义,中值滤波用于去除噪声。提供了一段核心程序代码,用于处理图像数据并在FPGA上实现。最终,检测结果输出到&quot;hand.txt&quot;文件。
|
1月前
|
机器学习/深度学习 算法 计算机视觉
基于yolov2深度学习网络的视频手部检测算法matlab仿真
基于yolov2深度学习网络的视频手部检测算法matlab仿真
|
1月前
|
算法
【MATLAB】语音信号识别与处理:移动中位数滤波算法去噪及谱相减算法呈现频谱
【MATLAB】语音信号识别与处理:移动中位数滤波算法去噪及谱相减算法呈现频谱
23 2