初赛复习
模
假设有一个数轴:
除法向 0 方向舍
例如 \(-7/4=-1 , -255/8=31\)
求模 假设有 \(a,b>0\)
则 \(a\ mod\ b=(-a)\ mod\ (-b)\)
如果异号,就按照除法规则,且余数正负与被除数相同
欧拉路
欧拉通路:通过图中所有边一次且仅一次行遍所有顶点的通路
欧拉回路:通过图中所有边一次且仅一次行遍所有顶点的回路
欧拉图:具有欧拉回路的图
半欧拉图:具有欧拉通路而无欧拉回路的图
对于有向图
设入度为 \(1\),出度为 \(-1\) ,则:
欧拉图:所有点度数为 \(0\)
半欧拉图:起点度数 \(-1\) 终点 \(1\) 其余 \(0\)
无向图
欧拉图:所有点度数为偶数
半欧拉图:两个点度数为奇数,其余偶数
排序
时间复杂度:
1、插入、选择、冒泡排序的时间复杂度为 \(O(n^2)\)
2、桶排序的时间复杂度为 \(O(n+m)\)
3、其他排序(快速排序、归并排序,希尔排序, 堆排序)的时间复杂度为 \(O(nlogn)\)
(1)插入和冒泡排序在序列整体有序的情况下能达 到比较快的速度。
(2)在数据整体有序或者大部分相同的情况下,快速排序的时间复杂度可能会特别慢,最坏可以到 \(O(n^2)\)
排序算稳定性
排序的稳定性是指原序列中相同元素的相对位置与排好序的新序列中相同元素的相对位置是否相同, 若相同,则为稳定排序,否则为不稳定排序。
插入排序、冒泡排序、归并排序是稳定排序。
选择排序、希尔排序、快速排序、桶排序、堆排序是不稳定排序。
这里不难发现,如果是按照顺序插入或相邻位置进行的调换,那么大概率这个排序是稳定的,反之,如果是大范围的跨越那么就很有可能是不稳定排序
希尔排序
插入排序的优化,将原序列分成等长的子序列,进行插入排序,不稳定,与值域无关,复杂度\(O(n)-O(n^{1.3})-O(n^2)\)
字符串
border
KMP 处理的最长公共前后缀,不能等于字符串本身。
二分图
判断
黑白染色,不冲突就是二分图
联通
点双
在一个连通图中任选两点,如果它们之间至少存在两条“点不重复”的路径,则称为点双连通分量。在这个图上去掉任意一个点,整个图仍然连通。即点双连通分量中不存在割点。
边双
在一个连通图中任选两点,如果它们之间至少存在两条“边不重复”的路径,则称为边双连通分量。在这个图上去掉任意一个边,整个图仍然连通。即边双连通分量中不存在割边(桥)。
割点可以属于不同点双,割边只属于一个边双
Linux命令
其他
1、memset(255) 就是 memset(-1)
2、\(\sum_{i=1}^n \frac{n}{i}\) 复杂度为 \(O(nlogn)\)
3、\(sizeof\) 询问变量类型的位数,\(int\) 为 \(4\),\(long long\) 是 \(8\) ,\(double\) 是 \(8\) ,\(long double\) 是 \(12\) ,\(char\) 是 \(1\)
4、\(next_permutation\) 获取下一个排列
5、卡特兰数 \(Cat_n=\binom{2n}{n}-\binom{2n}{n+1}\)

                
            
        
浙公网安备 33010602011771号