Loading

Page Views Count

有些东西特别爱忘,所以在这写一下。

EXCRT

首先会了 EXCRT 就可以不用会 CRT 了,感觉 EXCRT 或许好会。

有线性同余方程组:

\[\begin{cases} x\equiv& a_1\pmod {b_1}\\ x\equiv& a_2\pmod {b_2}\\ &\vdots\\ x\equiv& a_n\pmod {b_n}\\ \end{cases}\]

推导解法。

取出前两个式子,可以表示成:

\[x=k_1b_1+a_1=k_2b_2+a_2 \]

这样移项处理成:

\[b_1k_1-b_2k_2=a_2-a_1 \]

\(x_0=k1,y_0=k2\),那么有:

\[b_1x_0-b_2y_0=a_2-a_1 \]

可以 exgcd 解出 \(x_0\),注意是在 \(\dfrac{b_2}{\gcd(b_1,b_2)}\) 意义下的。

之后任意解可以写作 \(x_0+\dfrac{b_2}{\gcd(b_1,b_2)}\times k\)

代回去:

\[x=b_1x_0+\dfrac{b_1b_2}{\gcd(b_1,b_2)}\times k+a_1 \]

改写后是:

\[x=k\mathrm{lcm}(b_1,b_2)+b_1x_0+a_1 \]

于是合并成了:

\[x\equiv b_1x_0+a_1 \pmod{\mathrm{lcm}(b_1,b_2)} \]

讲真这个推导过程我学了快两年第一次看。

点击查看代码
inline ll mul(ll A,ll B,ll P){
    ll res=0;
    while(B){
        if(B&1) res=(res+A)%P;
        A=(A+A)%P;
        B>>=1;
    }
    return res;
}
ll exgcd(ll A,ll B,ll &X,ll &Y){
    if(!B){
        X=1,Y=0;
        return A;
    }
    ll D=exgcd(B,A%B,Y,X);
    Y-=A/B*X;
    return D;
}

int n;
ll a[maxn],b[maxn];

inline void EXCRT(){
    ll A=a[1],B=b[1];
    for(int i=2;i<=n;++i){
        ll X,Y;
        ll D=exgcd(B,b[i],X,Y),BD=b[i]/D;
        X=(X%BD+BD)%BD;
        X=mul(X,((a[i]-A)/D%BD+BD)%BD,BD);
        ll tmp=BD*B;
        A=(mul(X,B,tmp)+A)%tmp;
        B=tmp;
    }
    printf("%lld\n",A);
}

Stirling 数的恒等式

\[x^n=\sum_{i=0}^n \begin{Bmatrix}n\\i\end{Bmatrix} x^{\underline{i}} \]

\[x^n=\sum_{i=0}^n (-1)^{n-i}\begin{Bmatrix}n\\i\end{Bmatrix} x^{\overline{i}} \]

\[x^{\overline{n}}=\sum_{i=0}^n \begin{bmatrix}n\\i\end{bmatrix} x^{i} \]

\[x^{\underline{n}}=\sum_{i=0}^n (-1)^{n-i}\begin{bmatrix}n\\i\end{bmatrix} x^{i} \]

\[\begin{Bmatrix}n\\m\end{Bmatrix}=\sum_{i=0}^m \dfrac{(-1)^{m-i}i^n}{i!(m-i)!} \]

\[\begin{Bmatrix}n+1\\m+1\end{Bmatrix}=\sum_{i=m}^n \dbinom{n}{i}\begin{Bmatrix}i\\m\end{Bmatrix} \]

Hall 定理

对于二分图 \(G\),设左部点 \(V_L\) 的子集 \(T\) 的邻域 \(N_G(T)\),则二分图对左部点存在饱和匹配的充要条件是:

\[\forall T\in V_L,|T|\le |N_G(T)| \]

必要性:显然。

充分性:考虑对点数归纳,分两种情况讨论。

  • 若存在 \(T\) 使得 \(|T|=|N_G(T)|\),那么删去 \(T\) 以及 \(N_G(T)\),如果存在一个 \(S\) 使得 \(|S|>|N_{G'}(S)|\),那么 \(|S\cup T|>|N_G(S\cup T)|\),与题设不符。

  • 否则对任意 \(T\) 都有 \(|T|<|N_G(T)|\),任选 \((u,v)\) 钦定其匹配,并删去与 \(u,v\) 有关的边,之后仍满足 \(|T|\le |N_G(T)|\),原因是每个点集最多变化 \(1\)

posted @ 2023-07-16 19:36  SoyTony  阅读(188)  评论(0编辑  收藏  举报