Problem. O

题意简述:

给定素数\(P\),有\(n\)组询问,每次询问给定\(A,B,C,D\),要求出最小的\(Ax+By\),满足\(x,y\in\mathbb N_+\)\(P\mid|C^x-D^y|\)

数据范围:

\(n\le10^4,A,B,C,D,P\le10^9\)

解法:

求出\(\bmod P\)意义下的原根\(g\),令\(c=\gamma_{P,g}(C),d=\gamma_{P,g}(D),p=P-1\),那么限制条件就变成了\(cx\equiv dy\pmod p\)
\(q=\gcd(c,d,p)\),令\(c\leftarrow\frac cq,d\leftarrow\frac dq,p\leftarrow\frac dq\),这样就满足\(\gcd(c,d,p)=1\)了。
那么\(q=\gcd(c,p)\)满足\(q|y\),令\(c\leftarrow\frac cq,p\leftarrow\frac pq,B\leftarrow Bq\),这样限制条件就变成了\(cx\equiv dy\pmod p\),其中\(\gcd(c,p)=1\)
\(d\leftarrow dc^{-1}\),这样限制条件就变成了\(x\equiv dy\pmod p\)
同理\(q=\gcd(d,p)\)满足\(q|x\),令\(d\leftarrow\frac dq,p\leftarrow\frac pq,A\leftarrow Aq\),这样限制条件就变成了\(x\equiv dy\pmod p\),其中\(\gcd(d,p)=1\)
考虑对答案变形:\(Ax+By=A(dy\bmod p)+By=(B+Ad)y-Ap\lfloor\frac{dy}p\rfloor\)
这样就把限制条件给消掉了。先特判\(y=p\)的情况,那么现在我们有\(y\in[1,p)\)

\(p(y)=\lfloor\frac{Cy+D}E\rfloor,f(L,R,A,B,C,D,E)=\min\limits_{y\in[L,R]}(Ay+Bp(y))(C,D\ge0,E>0)\)

\(p(L)=p(R)\)

显然此时最优的\(y\in\{L,R\}\),直接计算即可。

\(C\ge E\)

\(f(L,R,A,B,C,D,E)=f(L,R,A+B\lfloor\frac CE\rfloor,C\bmod E,D,E)\)

\(C<E,A\ge0\)

\(l=p(L),r=p(R)\),对于\(k\in[l,r]\),选择\(\min\{y|p(y)=k\}\)一定是最优的。
先特判\(k=l\)的部分,此时\(y=L\)
否则可以求出\(y\in(\lfloor\frac{kE-D-1}C\rfloor,\lfloor\frac{(k+1)E-D-1}C\rfloor]\),那么最小的\(y\)就是\(\lfloor\frac{kE-D+C-1}C\rfloor\)
因此\(f(L,R,A,B,C,D,E)=\max(AL+Bp(L),f(L+1,R,B,A,E,C-D-1,C))\)

\(C<E,A<0\)

推导过程与上一部分相同,\(f(L,R,A,B,C,D,E)=\max(AR+Bp(R),f(L,R-1,B,A,E,E-D-1,C))\)

这一部分计算过程的时间复杂度与类Euclid算法是一致的,为\(O(n\log P)\)
求最小原根的时间复杂度大概是\(O(\sqrt[4] P\log^2P)\)
BSGS部分可以通过调整块大小做到\(O(\sqrt{nP})\)
因此总时间复杂度为\(O(\sqrt{nP}+n\log P+\sqrt[4]P\log^2P)\)

posted @ 2020-05-20 10:10  Shiina_Mashiro  阅读(175)  评论(0编辑  收藏  举报