zoukankan      html  css  js  c++  java
  • 车的放置

    车的放置


    这道题首先我们可以考虑特殊的情况:

    • 当给定的图形为矩形的时候:我们有(C_L^k*A_W^k)

    那么,对于不规则的图形,我们其实也可以通过分割为上下两个独立的矩形计算。

    具体来说:我们可以枚举在上面的有(i)和车,上下进行乘法原理计算。

    这道题其实很有启发意义:如果遇到一个题目无法直接计算,可以通过分割的手段分别来计算,最后通过加法原理累和答案。

    ……
    int a, b, c, d, k, jc[N], jc_inv[N];
    int power(int x, int y)
    {
    	int res = 1;
    	while(y)
    	{
    		if(y & 1) res = 1ll * res * x % mod;
    		y >>= 1;
    		x = 1ll * x * x % mod;
    	}
    	return res;
    }
    void init()
    {
    	CLR(jc, 0), CLR(jc_inv, 0);
    	jc[0] = 1;
    	FOR(i, 1, 2001) jc[i] = 1ll * jc[i - 1] * i % mod;
    	jc_inv[2001] = power(jc[2001], mod - 2);
    	ROF(i, 2000, 0) jc_inv[i] = 1ll * jc_inv[i + 1] * (i + 1) % mod;
    	return;
    }
    int C(int x, int y)
    {
    	if(x > y) return 0;
    	return 1ll * jc[y] * jc_inv[y - x] % mod * jc_inv[x] % mod; 
    }
    int A(int x, int y)
    {
    	if(x > y) return 0;
    	return 1ll * jc[y] * jc_inv[y - x] % mod;
    }
    int main()
    {
    	init();
    	scanf("%d %d %d %d %d", &a, &b, &c, &d, &k);
    	long long ans = 0, j;
    	for(int i = 0; i <= k; ++ i)
    	{
    		j = k - i;
    		ans += 1ll * C(i, b) * A(i, a) % mod * C(j, d) % mod * A(j, a + c - i) % mod;
    		ans %= mod;
    	}
    	printf("%lld
    ", ans);
    	return 0;
    } 
    
  • 相关阅读:
    Zookeeper的ZAB协议
    Netty从入门到放弃,从放弃在到入门
    Java多线程-锁的原理
    ContextLoaderListener的说明
    Jdk和Cglib 的区别
    zookeeper核心概念
    https
    [CS Academy] Infinity Array
    [JZOJ 5669] Permutaition
    [CF 613 Div.1E] Puzzle Lover
  • 原文地址:https://www.cnblogs.com/zach20040914/p/14346988.html
Copyright © 2011-2022 走看看