zoukankan      html  css  js  c++  java
  • 【NOIP2016提高A组模拟8.17】(雅礼联考day1)Matrix

    题目

    这里写图片描述

    分析

    假设,我们从(F_{i,2})出发,那么对(F_{n,n})的贡献就是(某个系数乘以a^{n-i}b^{n-1}r_i)
    同理,如果从(F_{2,i})出发,那么对(F_{n,n})的贡献就是(某个系数乘以a^{n-1}b^{n-i}l_i)
    那么某个系数是什么呢?
    感性理解一下,就是从出发点到(n,n)的方案数(C_{2*n-i-2}^{n-i})
    那么答案就是$$sum_{i-2}{n}C_{2*n-i-2}{n-i}(a{n-1}b{n-i}l_i+a{n-i}b{n-1}r_i)$$

    #include <cmath>
    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <algorithm>
    #include <queue>
    const long long maxlongint=2147483647;
    const long long mo=1000000007;
    const long long N=100005;
    using namespace std;
    long long l[N],r[N],a[N],b[N],jc[N*2],n,ny[N*2];
    long long mi(long long x,long long y)
    {
    	long long sum=1;
    	while(y)
    	{
    		if(y&1) sum=sum*x%mo;
    		x=x*x%mo;
    		y/=2;
    	}
    	return sum;
    }
    int main()
    {
    	scanf("%lld%lld%lld",&n,&a[1],&b[1]);
    	for(long long i=1;i<=n;i++) scanf("%lld",&l[i]);
    	for(long long i=1;i<=n;i++) scanf("%lld",&r[i]);
    	jc[0]=1;
    	for(long long i=1;i<=n*2;i++)
    	{
    		jc[i]=jc[i-1]*i%mo;
    	}
    	a[0]=b[0]=1;
    	for(long long i=2;i<=n;i++)
    	{
    		a[i]=a[i-1]*a[1]%mo;
    		b[i]=b[i-1]*b[1]%mo;
    	}
    	long long ans=0;
    	for(int i=2;i<=n;i++)
    	{
    		int sum=jc[2*n-i-2]*mi(jc[n-i],mo-2)%mo*mi(jc[n-2],mo-2)%mo;
    		sum=sum*(a[n-1]*b[n-i]%mo*l[i]%mo+a[n-i]*b[n-1]%mo*r[i]%mo)%mo;
    		ans=(ans+sum)%mo;
    	}
    	printf("%lld
    ",ans);
    }
    
    
  • 相关阅读:
    block的使用
    控制器的多种创建方式
    指针函数和函数指针
    UIScrollView实现图片轮播器及其无限循环效果
    如何按顺序执行两个动画
    代理、通知、KVO的应用
    CAlayer层的属性
    UIView的autoresizingMask和autoresizesSubviews属性的剖析
    面向对象编程思想(OOP)总结
    scala中闭包的使用
  • 原文地址:https://www.cnblogs.com/chen1352/p/9045296.html
Copyright © 2011-2022 走看看