2025/07/21 东师

image

BSGS

比起一个算法,它更类似一种思想,或者说是根号分治

普通BSGS

当我们想要求离散对数时有:

\[a^x\equiv n\pmod P \]

\[a^{km-b}\equiv n\pmod P \]

\[a^{km}\equiv na^b\pmod P \]

其中 \(b<m\),我们可以枚举所有 \(na^b \% P\) 塞到一个哈希表里,用所有 \(a^{km}\) 去查,注意到是根号平衡的,所以复杂度根号。

exBSGS

如果 \(a\)\(P\) 不互质呢?尝试转化成 \(a\)\(P\) 互质情况,关于同余,我们有一些式子:

\[a=b\pmod c\quad(gcd(a,c)=1)⇔a×d=b×d\pmod {c×d} \]

所以可以通过不断对 \(n\)\(P\) 除去 \(gcd(a,P)\) ,来使得做成普通 \(BSGS\)

P12541

怎么判定 \([l,r]\) 中有没有 \(n\) 的倍数?

\(C= r−l+1\) ,构造序列 \([1,2,⋯,C,l+C,l+2C,⋯,r+1]\),根据其返回值是否为零即可判定 \([l,r]\) 中有没有 \(n\) 的倍数。

因为如果发生哈希冲突,那么 \([1,r-l+1]\) 肯定有 \(n\) 的倍数,那么 \([l,r]\) 中也必有

用这个二分,你发现会略超出一些答案,这时候可以调整二分下界为 \(5\times 10^8\) 解决,因为所有数都有一个在新二分区间里的倍数。

Miller-Rabin & Pollard-Rho

Miller-Rabin

我们先考虑高斯定理,\(a^{p-1} \equiv 1 \pmod p\)

我们能否能直接用他反过来判断 \(p\) 是否为素数,不行,因为有的数并不成立。

但我们可以通过平方差公式把 \(n-1\) 拆小成 \(2\) 的幂次和别人的积,对于每个二的幂次的积用一些特定底数 \(a\) 判断。

Pollard-Rho

基于生日悖论,待学

容斥

单位根反演

todo

minmax容斥

\[max=\sum_{T\subset S} (-1)^{|T|} min(T) \]

我们可以有第 \(k\) 项的 \(max\) 的式子

\[max_k=\sum_{T\subset S} (-1)^{|T|} \binom{|T|-1}{k-1} min(T) \]

重要问题是这个对期望同样适用,有一些 \(max\) 求期望很难的题,可以用 \(min\) 做,下面便是例题

重返现世

发现是第 \(k\)\(max\) ,直接容斥为 \(min\)

\(dp\) 式子,发现这个状态数量就爆了,直接乘系数肯定破产了 (如果要状态数对必然丢信息)

那么我们不妨直接把 \(dp\) 状态设置为组合数的系数,这样根据数据范围就对了

后面to do

posted @ 2025-07-21 21:03  2019yyy  阅读(16)  评论(0)    收藏  举报