zoukankan      html  css  js  c++  java
  • CF559C Gerald and Giant Chess 题解

    Link

    CF559C Gerald and Giant Chess

    Solve

    有一个结论,对于一个(W)(H)的白色方格,从((1,1))((H,W))的方案数是(C_{H+W-2}^{H-1})

    直接考虑不能走黑色的比较难,于是想到容斥一下,把总的方案数-经过黑点的方案数=不走黑色的方案数

    因为黑点的数比较少,于是用黑点来(DP),先把黑点按照(x)排序

    定义(F[i])表示从左上角走到(i)这个黑色节点的位置,不经过其他黑点的方案数

    由于总的方案数-经过至少一个黑点的方案数=不经过其他黑点的方案数

    经过至少一个黑点的方案数=不经过白点到一个黑点,后面乱走,枚举每个满足的黑点,把答案累计起来就好了

    所以转移方程就退出来了

    [F[i]=C_{x_i-1+y_i-1}^{x_i-1}-sum_{j=0}^{i-1}F[j]ast C_{x_i-x_j+y_i-y_j}^{x_i-x_j} ]

    其中(x_i≥x_j,y_i≥y_j)

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=2005,TT=1000000007;
    typedef long long LL;
    int H,W,N;
    pair<int,int> a[maxn];
    LL jc[200005],jcinv[200005],F[maxn];
    inline int read(){
    	int ret=0,f=1;char ch=getchar();
    	while(ch<'0'||ch>'9'){if(ch=='-')f=-f;ch=getchar();}
    	while(ch<='9'&&ch>='0')ret=ret*10+ch-'0',ch=getchar();
    	return ret*f;
    }
    LL fast_pow(LL a,LL b){
    	LL s=1,w=a;
    	while(b){
    		if(b&1)s=s*w%TT;
    		w=w*w%TT;
    		b>>=1;
    	}
    	return s;
    }
    LL C(LL x,LL y){
    	return jc[x]*jcinv[y]%TT*jcinv[x-y]%TT;
    }
    int main(){
    	jc[0]=1;jcinv[0]=1;
    	for(int i=1;i<=200000;i++){
    		jc[i]=jc[i-1]*i%TT;
    		jcinv[i]=fast_pow(jc[i],TT-2);
    	}
    	H=read();W=read();N=read();
    	for(int i=1;i<=N;i++)a[i].first=read(),a[i].second=read();
    	sort(a+1,a+1+N);
    	a[N+1].first=H,a[N+1].second=W;
    	for(int i=1;i<=N+1;i++){
    		F[i]=C(a[i].first+a[i].second-2,a[i].first-1);
    		for(int j=1;j<i;j++){
    			if(a[j].first>a[i].first||a[j].second>a[i].second)continue;
    			F[i]=(F[i]-F[j]*C(a[i].first+a[i].second-a[j].first-a[j].second,a[i].first-a[j].first)%TT+TT)%TT;
    		}
    	}
    	printf("%lld
    ",(F[N+1]+TT)%TT);
    	return 0;
    }
    
  • 相关阅读:
    PWA渐进式增强WEB应用
    如何去掉wordpress头部<link rel='next' href='*/page/2' />
    wordpress修改邮箱提示There is a pending change of your email to
    使用WP-China-Yes让你的wordpress告别429错误
    Focus
    α_β_γ_δ_ε_ζ_η_θ_ι_κ_λ_μ_ν怎么读
    Ubuntu总结常用命令记录
    声明
    你所不知道的冰冷的经济真相(转自来自天涯大佬)
    杨振宁演讲谈这件事:我很高兴中国政府没有上当
  • 原文地址:https://www.cnblogs.com/martian148/p/14077930.html
Copyright © 2011-2022 走看看