sort函数:把数组从小到大排序
max函数:求出两个数的最大值
min函数:求出两个数的最小值
unique函数:使用前提是先排好序,再使用,效果是去重
merge_sort归并排序
reverse函数:翻转数组
random_shuffle函数:把a[1]到a[n]随机打乱
swap函数:交换两个数
没有单调性不能二分
位运算运行速度比加减乘除取模运算速度快
位运算符号有:& ^ |
只有两个矩阵的行和列一样时,才能进行矩阵的加减法。只有一个矩阵的行等于另一个矩阵的列时,才能进行乘法
矩阵乘法有结合律,但是没有交换律
搜索问题分为:(1)最优解问题 (2)可行解问题 (3)解数量问题
必须是最优解问题,每一步的代价都是最小步数,才能用bfs,其余问题都用dfs
优化技巧:(1)剪枝:少搜一些无用状态,分为可行性剪枝和最优性剪枝 (2)卡时(3)随机顺序搜索
全局变量在堆空间,局部变量在栈空间
堆空间为256M,可以存6.4×10的7次方个int,栈空间为64KB,只能存16384个int
堆默认定义为大根堆,栈是先进后出(一个桶),队列是先进先出:FIFO(first in first out)
单调队列要用手写队列,用单调递增队列来求最小值,用单调递减队列来求最大值。
归并排序核心思想就是分治,分完再治。
顺序赋值比随机顺序赋值更快。
从起点和重点同时开始bfs直到在中间某个位置相遇叫双向bfs
由点与边构成的元素分类:有向图,无向图
度:度分为入度,出度,只会出现在有向图,无向图只有度这个概念
入度:指向这个点的边的总数
出度:从这个点出去的点的总数
度(无向图):链接这个点的总数
自环:自己连接自己
路径:从一个点到另一个点的过程所经过的边
简单路径:不能走重复点的路径
环:终点 = 起点的路径
简单环:除了终点与起点,不能走重复点
连通:两个点能够通过路径到达
连通图:一个图所有的边都能互相到达
特殊类型的图:树(无向 无环 联通)
森林(无向 无环)
有向树 (有向 无环)
外向树(所有边都朝外)
内向树 (所有边都指向一个点)
章鱼(有环且只有一个环, 中间的点可以延伸出一棵树)
仙人掌(有多个环)
DAG(有向无环图)
注:链式结构既是外向,又是内向
如果把章鱼的环删掉一条边,就可以变成一个树
树任意加上一条边就是章鱼
染色法:把一个点染色为 1,然后一层一层向外染色。如果一条边连接的两个点的颜色一样,就说明不是二分图,否则就是。
拓扑排序:针对 DAG。
对有向图中的每一个点进行排序,使得最后的排序结果都是从左向右指的。
不断删除入度为0的点,然后不断把入度为0的点加入答案。
那如何删除一个点呢?其实不需要删除,只需要将入度减掉即可。
最短路问题可以分为两类:单源最短路问题,多源最短路问题
单源最短路问题:一个起点到其他点最短路
多源最短路问题:多个起点到其他点最短路
最短路的三角不等式:dist[i][j]<=dist[i][k]+dist[k][j]
解决多源最短路的算法:flogd:dist[i][j][k],意思是从j走到k,中间经过很多点,中间节点的编号必须都<=i
标签:编程,一个点,函数,短路,入度,无向,2023,排序,集训 From: https://www.cnblogs.com/zhuyucheng929/p/17548462.html