首页 > 编程语言 >【知识点】如何找到正确的算法?

【知识点】如何找到正确的算法?

时间:2023-10-05 09:55:40浏览次数:39  
标签:知识点 正确 10 text ------------ 算法 dp log

# 算法思路

**一、多组查询**

· 考虑如何利用已知信息避免重复查询。

· 考虑各种预处理,例如前缀和。

------------

**二、规模减小**

· 考虑树、链等

------------

**三、以小见大**

· 考虑特殊情况,并考虑以此为基础继续转移

------------


**四、模拟优化**

· 考虑高维复杂度算法,并考虑尽可能优化

------------

**五、题面信息**

· 数据规模


$$
n≥10^8:O(\log n) \text{或} O(1) \text{,包括找规律、矩阵乘法、快速幂、打表、找数据规律、数论等}
$$

$$
n≤10^6:O(n) \text{(有时可以考虑} O(n \log n) \text{的)} \text{,包括线性 dp、单调队列、单调栈、前缀和、差分等}
$$

$$
n≤10^5:O(n \log n) \text{或} O(n \log^2 n) \text{,包括线段树、平衡树等树形数据结构、dijkstra、Kruskal 等}
$$

$$
n≤10^3:O(n^2) \text{,包括大多数 dp 还有 prim 等}
$$

$$
n≤300:O(n^3) \text{,包括高维 dp,floyd 等}
$$

$$
n≤70:O(n^4) \text{,一般是 dp,或许可以尝试下搜索}
$$

$$
n≤20:(2^n) \text{,包括暴搜,状压 dp,各类二进制算法等}
$$

$$
n≤10:O(n!) \text{,一般是暴搜}
$$

· 特殊信息

$$
\text{各种二:二分图、二进制差分等}
$$

$$
\text{n 次以内无解:迭代加深搜索}
$$

$$
\text{图论 + k 条路优化:分层图}
$$

------------

**参考资料:[zhz的相关博客](https://www.luogu.com.cn/blog/zhzkiller/zsd-everything)**

标签:知识点,正确,10,text,------------,算法,dp,log
From: https://www.cnblogs.com/Alexxtl/p/17743096.html

相关文章

  • 【基础算法】排序算法 —— 插入排序
    一、算法原理插入排序将数组分为已排序区间和未排序区间,初始已排序区间只有数组第1个元素,未排序区间从下标1开始到数组末尾。每次取未排序区间的第1个元素,将它插入已排序区间的合适位置,并保证已排序区间一直有序。重复这个过程,直到未排序区间为空,算法结束。给有序数组(已排序区......
  • 关于Async、Await的一些知识点
    在ASP.NETCore中,当一个HTTP请求到达服务器时,它会被分配给线程池中的一个线程来处理。该线程会执行相应的Controller方法。如果这个方法是一个异步方法并且使用了await关键字,那么在await的代码执行完毕之前,这个线程会被释放回线程池,可以用来处理其他的HTTP请求。当await的代码执......
  • 【基础算法】排序算法 —— 选择排序
    一、算法原理选择排序将数组分为已排序区间和未排序区间,每次选择未排序区间的最小元素,将它放到已排序区间末尾。一次选择会让一个元素移动到它应该在的位置,重复n次,就完成了n个数据的排序。 示例:使用选择排序对数组arr=[4,5,6,3,2,1]从小到大排序。第1次选择:第2次选择:......
  • 【基础算法】排序算法 —— 冒泡排序
    一、算法原理冒泡排序只会操作相邻的两个数据。每次冒泡操作都会对相邻的两个元素进行比较,如果不满足大小关系要求,就进行交换。一次冒泡会让至少一个元素移动到它应该在的位置,重复n次,就完成了n个数据的排序。 示例:使用冒泡排序对数组arr=[4,5,6,3,2,1]从小到大排序。第1次......
  • 稳定婚姻问题(Gale-Shapley算法)
    前言今天duck、香饽饽老板和彬彬一起出了个模拟赛,赛时T2想到了跟正解很接近的做法,但最后还是打挂了then喜提0pts,后面duck讲题的时候才知道是稳定婚姻板题。看完证明之后觉得很妙,遂开坑。只是简单整理,图一乐子吧算是。说是稳定婚姻问题,但其实我觉得更合适的叫法是属性稳定分......
  • 【基础算法】排序算法
    一、排序算法简介排序是对批量数据按照一定的顺序进行排列的操作。1.1学习排序算法的要点算法原理、代码实现、评价算法优劣。1.2评价排序算法的优劣排序算法的优劣可以从以下3个方面进行评价:时间性能:最好、最坏、平均时间复杂度;内存占用:是否原地排序,原地排序算法,......
  • C/C++学习 -- 分组加密算法(DES算法)
    数据加密标准(DataEncryptionStandard,DES)是一种对称密钥加密算法,是信息安全领域的经典之作。本文将深入探讨DES算法的概述、特点、原理,以及提供C语言和C++语言实现DES算法的代码案例。一、DES算法概述DES算法是一种对称密钥加密算法,由IBM于1977年开发并于1977年被美国国家标准局(NI......
  • 关于 HTML 元素是否能够正确响应用户点击事件的讨论
    已知两组HTML元素:<inputdisabled/>,<buttontabindex="0">,<button(click)="foo($event)"></button><divtabindex="0"></div>,<p(click)="foo($event)"></p><lirole=&......
  • 视频融合/监控汇聚平台EasyCVR人形检测算法应用汇总
    安防视频监控平台EasyCVR是一个具有强大拓展性、灵活的视频能力和轻便部署的平台。它支持多种主流标准协议,包括国标GB28181、RTSP/Onvif、RTMP等,还可以支持厂家的私有协议和SDK接入,例如海康Ehome、海大宇等设备的SDK。该平台不仅拥有传统安防视频监控的功能,还具备接入AI智能分析的......
  • 排序算法
    在线验证算法排序数组算法实现1.快排思路树的前序遍历。每次选取一个数作基准值,将小于基准值的数放在左边,大于基准值的数放在右边。遍历左子树及右子树,直到只有1个数为止。实现classQuickSort{publicstaticvoidsort(int[]nums){shuffle(nums);......