离散化:
//离散化,可以处理一些跨越区间比较大的时候的位置关系,空间更紧凑
int n,m;
int a[N],b[N],c[N];
int cnt=0;
//lower_bound 第一个大于等于x的数
//upper_bound 第一个大于x的数
int main() {
n=read();
for(int i=1;i<=n;i++) {
a[i]=read();
b[i]=read();
c[++cnt]=a[i];
c[++cnt]=b[i];
}
sort(c+1,c+cnt+1);
cnt=unique(c+1,c+cnt+1)-c;
for(int i=1;i<=n;i++) {
a[i]=lower_bound(c+1,c+cnt+1,a[i])-c-1;
b[i]=lower_bound(c+1,c+cnt+1,b[i])-c-1;
}
return 0;
}
阶乘逆元、组合数:
//只会手搓龟速费马小定理求逆元...
int ksm(int a,int b) {
int ans=1;
while(b) {
if(b&1) ans*=a,ans%=mod;
a=(a*a)%mod;
b>>=1;
}
return ans;
}
int n,inv[N],jc[N];
int get_inv(int a,int b) {
return a*(ksm(b,mod-2))%mod;
}
void inv_init() {
inv[0]=inv[1]=jc[1]=1;
for(int i=2; i<=n; i++) {
jc[i]=jc[i-1]*i%mod;
inv[i]=get_inv(inv[i-1],i)%mod;
}
}
int C(int n,int m) {//n个里选m个
return (jc[n]*inv[n-m])%mod*inv[m]%mod;
}
signed main() {
n=read();
inv_init();
//......
return 0;
}
标签:int,inv,bound,板子,ans,一些,jc,mod
From: https://www.cnblogs.com/Diamondan/p/16924953.html