ARC158 题解

D. Equation

好猛啊这个题。

下文将会给出两种做法,一种是官方题解,一种来自 @我打。

下文构造的 \(x,y,z\) 不按大小排序。

算法一

来自 @我打,考虑钦定 \(y=kx,z=k^2 x\),那么,第二个条件可以变为:

\[(k^2+k+1)(k^{2n}+k^n+1)(k^{4n}+k^{2n}+1)x^{3n+1}\equiv (k^{6n}+k^{3n}+1)x^{3n}\bmod {p} \]

如果 \(k^2+k+1\)\(k^{2n}+k^n+1\)\(k^{4n}+k^{2n}+1\)\(k^{6n}+k^{3n}+1\) 均不为 \(0\),则可以直接解出 \(x\)

发现 \(p=7,19\) 的时候跑不出来,所以直接暴力。

所以,随机 \(k\),直到上述四者均不为 \(0\),即求得一组解,为什么能过?我不知道。

算法二

官方题解,考虑钦定 \(x=ta,y=tb,z=tc\),随机 \(a,b,c\),那么,第二个条件可以变为:

\[t^{3n+1}(a+b+c)(a^n+b^n+c^n)(a^{2n}+b^{2n}+c^{2n})\equiv t^{3n}(a^{3n}+b^{3n}+c^{3n}) \bmod {p} \]

同样的,如果 \(a+b+c\)\(a^n+b^n+c^n\)\(a^{2n}+b^{2n}+c^{2n}\)\(a^{3n}+b^{3n}+c^{3n}\) 均不为 \(0\),那么我们可以得到 \(t\),从而解出答案。

随机成功的概率是 \(1/4-O(1/p)\),具体证明不想写了,看官方题解吧。

E. All Pair Shortest Paths

考虑分治,定义 \(\text{solve}(l,r)\) 表示求 \([l,r]\) 内所有点对的最短路。

求区间中点 \(mid\),从 \((1,mid)\)\((2,mid)\) 出发各找一遍最短路,记其分别为 \(d_1(u)\)\(d_2(u)\)

我们只统计跨越区间中点的最短路,剩下的交给后续的分治过程。

对于一个左边的点 \(x\),一个右边的点 \(y\),他们之间的最短路就是 \(\min(d_1(x)+d_1(y),d_2(x)+d_2(y))\),考虑什么时候前面的会是较小值,可化为 \(d_1(x)-d_2(x)\le d_2(y)-d_1(y)\),那么可以直接排序扫一遍求出这些最短路。

由此,本题在 \(O(n\log n)\) 的时间复杂度内解决。

上面是口胡,代码还没写。

posted @ 2023-03-13 11:52  cnyz  阅读(47)  评论(0编辑  收藏  举报