zoukankan      html  css  js  c++  java
  • 「考试」省选58

    我淦了这个T3

    T1
    考虑模意义下解方程。
    我们对每一个点列一个方程。
    可以列出(n-1)个,另外一个加不加是一样的,因为可以用(n-1)个来表示(n)个。
    那么建树。
    剩下的(m-(n-1))条边和树边可以构成(m-(n-1))个环。
    然后可以列出来剩下的(m-(n-1))个方程。
    总共(m)个方程(m)个变量。
    然后我们发现后(m-(n-1))个方程仅含有一条非树边。
    那么做主元分析。
    把非树边用常数和树边表示出来然后代入前(n-1)条边。
    那么还剩下树边为变量,(n-1)个方程(n-1)个变量。
    全都解出来,然后回代非树边,得解。

    T2
    我们要求得两条路径不相交得方案。
    其实就是(s_1=(2,1) ightarrow t_1=(n,m-1))(s_2=(1,2) ightarrow t_2=(m,n-1))这两条路径不相交得方案。
    枚举中间交叉的第一个点,(p)
    然后交换以后的路径。
    得到的就是(s_1 ightarrow p ightarrow t_2,s_2 ightarrow p ightarrow t_1)这两条路。
    那么答案就是:
    ((s_1 ightarrow t_1,s_2 ightarrow t_2)-(s_1 ightarrow t_2,s_2 ightarrow t_1))
    并且路径不要求不相交。
    那么我们可以对每一条路径都做一个(C^3)(dp)就行了。
    仍然是容斥做这个经典的(dp)

    T3
    按照题意模拟建树。
    求出最短路(DAG)和最短路题意树。
    对于每一个点维护一个(C_x)表示深度最浅的,不需要经过树边而(x)能够翻到的点为(C_x)
    那么在最短路(DAG)上我们把非树边用来更新(C_x)
    对于一条边((x,y)),我们可以用(x)来更新(y),那么(C_y=min(C_y,minlimits_{iin{x ightarrow lca(x,y)}})C_i)
    这样我们就搞完了。
    用一个倍增来存这个东西,查询的时候直接查询就可以了。
    然而我写的太麻烦了。
    。。。。
    调到猝死。

  • 相关阅读:
    geoserver显示shapefile中汉字呈乱码问题的可选解决方案
    C++回调函数示例
    也谈谈技术面试
    轻快好的c++实践
    向 Hacker 迈进 我的书单
    CMake是个好东西
    工作之中总有几日不在状态_你是怎样度过的?
    我是如何从煤矿工成为程序员的
    java多线程系列_用Thread类创建线程(2)
    java多线程系列_使用Runnable接口创建线程(3)
  • 原文地址:https://www.cnblogs.com/Lrefrain/p/12605555.html
Copyright © 2011-2022 走看看