图论

T1

题目大意:给定一个n个点m条边的有向图,对于每条边求其翻转后是否SCC个数发生变化(n<=1000,m<=200000)

假设现在考虑一条边(u,v),设去掉这条边后u->v,v->u的状态分别为L,R

1>L=1,R=1 u,v一定在同一个SCC里一定不变

2>L=0,R=0 一定不在也不变

3>L=0,R=1 SCC-1,这种情况直接对于每个点dfs一遍即可

4>L=1,R=0 考虑所有u的出边那么L=1说明前缀和后缀的边至少有一个可以到达v的路径,直接dfs即可

T2

题目大意:给定一个n个点m条边的有向图,边权都为1,求出每条边(u,v)被删掉后u到v的最短路(n<=1000,m<=100000)

首先枚举根S之后bfs求出最短路树

假如删去(S,T)

那么在树上T的子树的最短路才会受到影响

这些点的最短路都可以由外界点更新出一个初始值

之后内部更新直接跑DJ/SPFA多个log不是很能过

因为权值只有1,所以最短路的距离不超过n

考虑维护n个队列,每个队列i存储dis=i的所有点

模拟DJ的过程便可以去掉log

T3

小凸和小方是好朋友,小方给了小凸一个 n×m(n≤m)的矩阵 A,并且要求小凸从矩阵中选出 n 个数,其中任意两个数都不能在同一行或者同一列。
现在小凸想知道,选出的 n 个数中第 k 大的数的最小值是多少。

把选(i,j)转化为i->n+j连一条边

那么问题转化为匹配问题

二分答案后跑最大流即可

T4

首先有个神仙建图:

对于每张牌,反面颜色->正面

那么一个方案合法则意味着每个点的入度小于等于1

对于每个联通块分别考虑,设某个联通块点数为V,边数为E

1>V<E 显然一定有一个点入度大于1

2>V=E-1树形dp一下得出每个点为根的最小翻转数

3>V=E是个基环树,环上两种方向考虑一下,外向树上都是确定的

posted @ 2020-03-12 17:39  ATHOSD  阅读(157)  评论(0编辑  收藏  举报