• Jzoj4709 Matrix


    十分套路,这种题很明显是单独计算每个元素的贡献来搞的

    我们发现,对于ti,它最后到n,n的路线有C(2n-i-2,n-2)

    而对于每条路线,其值发生的变化都为t[i]*a^(n-i)*b^(n-1)

    所以贡献就是∑t[i]*a^(n-i)*b^(n-1)*C(2n-i-2,n-2)

    l的话差不多吧

    快速求c(n,m)应该不用讲了吧

    #include<stdio.h>
    #define L long long
    #define M 1000000007
    L pow(L x,int k){
    	L s=1;
    	for(;k;x=x*x%M,k>>=1) 
    		if(k&1) s=s*x%M;
    	return s;
    }
    L a[100010],b[100010],sa=1,sb=1,S=0;
    int n,A,B; 
    L pa,pb,inv[200010],js[200010];
    L C(int m,int n){
    	return js[m]*inv[m-n]%M*inv[n]%M;
    }
    int main(){
    	scanf("%d%d%d",&n,&A,&B);
    	for(int i=1;i<=n;++i) scanf("%d",a+i);
    	for(int i=1;i<=n;++i) scanf("%d",b+i);
    	pa=pow(A,n-1); pb=pow(B,n-1);
    	*js=*inv=1;
    	for(int i=1;i<=n<<1;++i){
    		js[i]=js[i-1]*i%M;
    		inv[i]=pow(js[i],M-2);
    	}
    	if(n==1){ return 0&printf("%d
    ",a[1]); }
    	for(int i=n;i>1;--i){
    		L c=C(2*n-i-2,n-i);
    		S=(S+c*(a[i]*pa%M*sb%M+b[i]*pb%M*sa%M)%M)%M;
    		sa=sa*A%M; sb=sb*B%M;
    	}
    	printf("%lld
    ",S);
    }

  • 相关阅读:
    Zabbix5 Frame 嵌套
    Zabbix5 对接 SAML 协议 SSO
    CentOS7 安装 Nexus
    CentOS7 安装 SonarQube
    GitLab 后台修改用户密码
    GitLab 查看版本号
    GitLab Admin Area 500 Error
    Linux 安装 PostgreSQL
    Liger ui grid 参数
    vue.js 是一个怪东西
  • 原文地址:https://www.cnblogs.com/Extended-Ash/p/7774370.html
Copyright © 2020-2023  润新知