• 图论


    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是个基环树,环上两种方向考虑一下,外向树上都是确定的

  • 相关阅读:
    驱动-问题解决
    Broadcast-广播的接收
    menu-代码添加以及add方法参数意义
    ubuntu-12.04工作区内容变换所属工作区
    $.ajax(),传参要用data
    阻止浏览器默认的事件冒泡行为
    form提交跳转问题
    根据已知值,选中selec中的选项
    option click事件
    按回车键确定
  • 原文地址:https://www.cnblogs.com/AthosD/p/12388283.html
Copyright © 2020-2023  润新知