zoukankan      html  css  js  c++  java
  • 21.10.13模拟 染色

    为了能分清楚每块板砖用来秒掉哪种类型的题(雾),他需要把板砖染色。他手上有红色、蓝色和绿色颜料可以染色。其中,用红色染一块板砖可以得到A的能力加成;用蓝色染一块板砖可以得到B的能力加成;用绿色染一块板砖可以得到C的能力加成。板砖可以不染色,这样这块板砖就不会贡献任何的能力加成。为了使得能力加成正好为x,有几种染法。C=A+B;

    其实可以不管绿色的。直接看A+B,因为
    RB_GBG
    R__R_R
    _B_BBB

    inline void init() {
    	fac[0] = 1;
    	rep(i, 1, N)	{
    		fac[i] = 1ll * fac[i - 1] * i % mod;
    	}
    	inv_fac[N] = Quick_Pow(fac[N], mod - 2);
    	drp(i, N - 1, 0) {
    		inv_fac[i] = inv_fac[i + 1] * (i + 1) % mod;
    	}
    	inv_fac[0] = 1;
    }
    inline lxl C(lxl n,lxl m){
    	if(m>n) return 0;
    	return fac[n]*inv_fac[m]%mod*inv_fac[n-m]%mod;
    }
    /*
    inline lxl AA(lxl a, lxl b, lxl c) {
    	return fac[n] * inv_fac[a] % mod * inv_fac[b] % mod * inv_fac[c] % mod * inv_fac[n - a - b - c] % mod;
    }*/
    int main() {
    	freopen("color.in","r",stdin);
    	freopen("color.out","w",stdout);
    	init();
    	read(T);
    	while(T--) {
    		read(n);
    		read(A);
    		read(B);
    		read(x);
    		ans=0;
            rep(i,0,n){
            	lxl rest=x-1ll*i*A;
            	if(rest<0) continue;
            	if(rest%B) continue;
            	lxl j(rest/B);
            	ans=(ans+C(n,i)*C(n,j)%mod)%mod;
    		}
    		out(ans, '
    ');
    	}
    	return 0;
    }
    

    本文来自博客园,作者:{2519},转载请注明原文链接:https://www.cnblogs.com/QQ2519/p/15400724.html

  • 相关阅读:
    提高 github.com 项目下载速度
    理解git 中的HEAD指针&branch指针
    Docker Compose 配置文件详解
    Yarn 配置阿里源
    Laravel
    reCAPTCHA打不开的解决方法
    CC2 条理分明-----独立思考
    CC2 条理分明-----AACTP教你谈恋爱
    CC4 表达方式----输赢
    lambda匿名函数透析
  • 原文地址:https://www.cnblogs.com/QQ2519/p/15400724.html
Copyright © 2011-2022 走看看