随笔分类 - A-图论-拓扑排序
摘要:题意简述 你有一个长度为$N$的排列。将$i$和$j$两个位置的数字交换的条件是:$|i-j|>=k$并且$|Ai-Aj|=1$ 你可以进行无数次交换操作,输出操作后能够得到的最小的字典序的排列。 \(N≤5e5\) 分析 首先,第一步的转化就很不容易想到。 就是我们可以把数和下标进行调换。 定义反
阅读全文
摘要:定义 对一个有向无环图(Directed Acyclic Graph简称DAG)$G$进行拓扑排序,是将$G$中所有顶点排成一个线性序列,使得图中任意一对顶点$u$和$v$,若边$(u,v)∈E(G)$,则$u$在线性序列中出现在$v$之前。 实现步骤 在有向图中选一个没有前驱的顶点并且输出 删除所
阅读全文
摘要:题意居然还读了好久... 读完题目之后大概就知道拓扑排序了。用拓扑可以求出一些字母之间的关系,谁先,谁后。但是这个关系不是唯一确定的,所以就会产生多种方案(题目还要求按字典序输出所有的方案) 输出方案要麻烦一些,最刚开始还没有想到。可以用一个$dfs$,当这个点的入度变为$0$之后,就输出,递归到下
阅读全文