「考试」省选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)\rightarrow t_1=(n,m-1)\)\(s_2=(1,2)\rightarrow t_2=(m,n-1)\)这两条路径不相交得方案。
枚举中间交叉的第一个点,\(p\)
然后交换以后的路径。
得到的就是\(s_1\rightarrow p\rightarrow t_2,s_2\rightarrow p\rightarrow t_1\)这两条路。
那么答案就是:
\((s_1\rightarrow t_1,s_2\rightarrow t_2)-(s_1\rightarrow t_2,s_2\rightarrow 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,\min\limits_{i\in\{x\rightarrow lca(x,y)\}})C_i\)
这样我们就搞完了。
用一个倍增来存这个东西,查询的时候直接查询就可以了。
然而我写的太麻烦了。
。。。。
调到猝死。

posted @ 2020-03-31 15:31  Lrefrain  阅读(146)  评论(2编辑  收藏  举报