zoukankan      html  css  js  c++  java
  • CF1515G

    题意

    给定一个带边权的有向图,(q)次询问,给定(u,p,x),问是否存在从(u)出发的回路(可以重复走),使得边权之和(equiv x(mod p))
    (n,m,qle 2cdot 10^5,0le x<ple 10^9)

    做法

    这道题很容易想出做法,下面讲讲理论。

    考虑一般情况,给定图为强连通图。

    引理1:在模意义下,若从(u)(v)存在(x)长度的路径,则从(v)(u)存在(-x)长度的路径。

    证明:
    对于(v)到任意一条到(u)的长度为(y)的路径,再加上(u)(v)长度为(x)的路径,绕这个环走,可以得到(ky+(k-1)x(kge 1))(py+(p-1)xequiv -x(mod p))

    引理2:在模意义下,若从(u)出发,存在长度为(x)的回路,则从任意点出发都存在长度为(x)的回路。

    证明:
    对于从(forall u'in V),任意一条(u' ightarrow u)长度为(y)的路径,根据引理1,则存在一条(u ightarrow u')长度为(-y)的路径,从(u')出发,依次经过这三段路径:(y+x+(-y)=x)

    任选一点(r)为根,对于任意一棵生成树,令(d_u)为从(r ightarrow u)树上路径和,对于每条非树边((u,v,w)),存在长度为(w+d_u-d_v)的环。

    引理3:任何环,都可由上述环线性组合。

    证明:
    对于环(u_1 ightarrow u_2 ightarrow ldots ightarrow u_k ightarrow u_{k+1}(u_{k+1}=u_1)),对于任意(u_i ightarrow u_{i+1}),若这条边为非树边,则用(w(u_i,u_{i+1})+d_{u_i-d_{u_{i+1}}})表示,最后得到的边权和恰好为这个环。

    引理4:任意上述环的线性组合,均可对应图中的某条路径。

    证明:
    根据引理1,可以简单将两个环合并在一起,因为环之间的路径可以被抵消掉。

    至此,将问题转化成了给定(a_1,a_2,ldots,a_m),能否在模意义下线性组合成一个数,这是个经典问题。

  • 相关阅读:
    一般图最大匹配
    UOJ164 线段树历史最值查询
    一个经典的排列组合面试题目
    动态代理理解
    JAVA nio
    hadoop NameNode 实现分析
    以一个上传文件的例子来说 DistributedFileSystem
    hadoop IPC 源代码分析
    hadoop DataNode实现分析
    HDFS 整体把握
  • 原文地址:https://www.cnblogs.com/Grice/p/14878301.html
Copyright © 2011-2022 走看看