摘要:
#定义 在无向图中,所有能互通的点组成了一个“连通分量”。在一个连通分量中有一些关键的点,如果删除它们,会把这个连通分量分成两个或更多,这种点称为割点(Cut vertex)。 类似的有割边(Cut edge,又称为桥,bridge)问题。在一个连通分量中,如果删除一条边,把这个连通两个(注意边最多 阅读全文
摘要:
#定义 欧拉路径 图中所有的边都经过且只经过一次(一笔画)。 欧拉回路 起点与终点相同的欧拉路径。 #欧拉路径(回路)判定 有向图的欧拉路径 图中恰好存在一个点出度比入度多一(起点),一个点入度比出度多一(终点),其余节点出度=入度(可进可出)。 有向图的欧拉回路 所有点的入度=出度(任意点可作为起 阅读全文
摘要:
#cin.getline(name,ArSize) name为数组名,ArSize为要读取的字符数,该函数最多读入的字符数为ArSize-1,读到换行符时停止并丢弃换行符。 #cin.get(name,ArSize) 与cin.getline()的区别为cin.get()会将换行符留在输入队列中。 阅读全文
摘要:
### extern `extern`是一个关键字。正常情况下,声明一个全局变量会自动定义它,并未它分配内存,但加上`extern`后不会定义,仅仅是声明。 ``` #include using namespace std; extern int a; int main() { cout using 阅读全文
摘要:
一个图能进行拓扑排序的充要条件是它是一个有向无环图(DAG directed acyclic graph)。 #基于BFS的拓扑排序 先将所有入度为0的点放入队列中(顺序无关紧要),每次将队首弹出的点加入拓扑序列中,然后将该点所有的相邻点入度减1,将入度减为0的点入队。 当队列为空时,若所有点都以加 阅读全文
摘要:
#差分数组 我们令$a[i]$表示原数组 $dif[i]$表示差分数组 那么我们就有 $$ \left{ \begin{aligned} dif[0]&=a[0]\ dif[i]&=a[i]-a[i-1],i>0 \end{aligned} \right. $$ 那么$a[i]=\sum_{k=0} 阅读全文
摘要:
最近公共祖先简称LCA(Lowest Common Ancestor)。两个节点的最近公共祖先,就是这两个点所有的公共祖先里面,离根最远的那个。 \(d(u,v)=h(u)+h(v)-2*h(lca(u,v))\) 例题 P3379 【模板】最近公共祖先(LCA) #Tarjan求解最近公共祖先 基 阅读全文
摘要:
#DFS序 DFS序代表着树从根节点开始进行DFS的节点的遍历顺序。 那么上图的DFS序显然为1,2,4,7,8,9,5,3,6 容易发现一棵子树内所有结点的DFS序是连续的,并且根节点的DFS序最小。那么假设我们已经有整颗树的DFS序为dfn[u], 子树的大小为size[u],就可以得到结点u的 阅读全文
该文被密码保护。 阅读全文
摘要:
#算法简介 中国剩余定理(Chinese Remainder Theorem,CRT)可以用来求解如下形式的一元线性同余方程组。(注意$n_1,n_2,\cdots,n_k$,两两互质) $$ \left{ \begin{aligned} x\ &\equiv\ a_1\ (mod\ n_1)\ x 阅读全文