解题的基本套路

# Algorithm

算法复杂度,建议不超过n的范围
O(logn) long long内都能运行,long long数值小于10^18
O(n)    不超过10^7
O(nlogn)  10^5-5*10^5
O(n^2)    1000-5000
O(n^3)    200-500
O(2^n)    20-24
O(n!)     12


二分查找与二分答案

二分查找:查目标值的下标
 (1)常用函数:binary_search() ,lower_bound() , upper_bound()
 (2)注意事项:只有有序序列才能二分查找(要先排序);
二分答案:对一定的值域查找答案(值域是不需要排序的), 本来就有序
 (1)求最大到最小
 (2)求最小到最大


贪心算法大部分要先进行排序

数据结构
(1)队列:先进先出,后进后出,通常用在bfs(广度优先)算法,拓扑排序
(2)栈: 后进先出,先进后出,通常用在dfs(深度优先)算法,拓扑排序
(3)图:图是节点和边的集合,树是图的子集,因此图的一些算法也适合树
a.图的分类:有向图与无向图,有权图与无权图,稀疏图和稠密图,无环图(通常指有向无环图)
b.图的存储:
           1.)边的集合法,其记录节点数,边数, 每条边的起点和终点。最基本最简单的方法,但是寻找邻居点麻烦,需要转换成邻接矩阵或用数组模拟邻接表
           2.)邻接矩阵(二维数组),其记录任意两点之间是否存有边。简单容易理解,但有很多冗余数据,时间复杂度高,适合存储稠密图
           3.)数组模拟邻接表,其只记录存有边的两点,不容易理解,但无冗余数据,时间复杂度低,适合存储稀疏图
              i:方法一:普通数组实现(实现起来麻烦,能看懂即可)
              ii:方法二:动态数组实现(实现起来简单,必须掌握)
c.图的遍历
          1.)深度优先搜索,关键操作是父亲出栈,孩子入栈,以及合法孩子的判断
          2.)广度优先搜索,关键操作是父亲入栈,孩子出栈,以及合法孩子的判断
          3.)图的拓扑排序
          4.)最短路径,重点掌握Floyd算法、SPFA算法
          5.)最小生成树:重点掌握Kruskal算法,用到并查集排序算法,期时间复杂度为n*logn


          
              
              
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值