Page Views Count

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

EXCRT#

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

有线性同余方程组:

{xa1(modb1)xa2(modb2)xan(modbn)

推导解法。

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

x=k1b1+a1=k2b2+a2

这样移项处理成:

b1k1b2k2=a2a1

x0=k1,y0=k2,那么有:

b1x0b2y0=a2a1

可以 exgcd 解出 x0,注意是在 b2gcd(b1,b2) 意义下的。

之后任意解可以写作 x0+b2gcd(b1,b2)×k

代回去:

x=b1x0+b1b2gcd(b1,b2)×k+a1

改写后是:

x=klcm(b1,b2)+b1x0+a1

于是合并成了:

xb1x0+a1(modlcm(b1,b2))

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

点击查看代码
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 数的恒等式#

xn=i=0n{ni}xi_

xn=i=0n(1)ni{ni}xi¯

xn¯=i=0n[ni]xi

xn_=i=0n(1)ni[ni]xi

{nm}=i=0m(1)miini!(mi)!

{n+1m+1}=i=mn(ni){im}

Hall 定理#

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

TVL,|T||NG(T)|

必要性:显然。

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

  • 若存在 T 使得 |T|=|NG(T)|,那么删去 T 以及 NG(T),如果存在一个 S 使得 |S|>|NG(S)|,那么 |ST|>|NG(ST)|,与题设不符。

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

作者:SoyTony

出处:https://www.cnblogs.com/SoyTony/p/Notes.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   SoyTony  阅读(245)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示