首页 > 其他分享 >一些板子

一些板子

时间:2022-11-25 14:25:41浏览次数:51  
标签:int inv bound 板子 ans 一些 jc mod

离散化:

//离散化,可以处理一些跨越区间比较大的时候的位置关系,空间更紧凑 
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

相关文章