【NOIP模拟】Matrix
来源:互联网 发布:d3.js 力学图 编辑:程序博客网 时间:2024/06/07 12:57
Description
Solution
一道大大的找规律题。
从每个l和t走到右下角,对于每个l、t,a和b的次数都是确定的,然后可以算出每个l和t走到右下角a和b的次数。
对于l走到右下角的a和b的状况会是
但是走到右下角的路径会有很多种情况,用组合数算一下就是
所以预处理一下阶乘和阶乘的逆元就好了。
Code
#include<iostream> #include<cstdio>#include<algorithm>#include<cmath>#include<cstring>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;const int mo=1000000007,maxn=200007;typedef long long ll;ll i,j,k,n,m;ll l[maxn],t[maxn],xi,shang,xia1,xia2,a,b;ll jie[maxn],ni[maxn],cia[maxn],cib[maxn],ans;ll qsm(ll x,ll y){ ll z=1; while(y){ if(y&1)z=z*x%mo; y/=2; x=x*x%mo; } return z;}int main(){// freopen("fan.in","r",stdin); scanf("%lld%lld%lld",&n,&a,&b); fo(i,1,n)scanf("%lld",&t[i]); fo(i,1,n)scanf("%lld",&l[i]); cia[0]=cib[0]=1; fo(i,1,n){ cia[i]=(cia[i-1]*a)%mo; cib[i]=(cib[i-1]*b)%mo; } jie[0]=1; fo(i,1,2*n)jie[i]=jie[i-1]*i%mo; ni[0]=ni[1]=1; fo(i,2,2*n)ni[i]=qsm(jie[i],mo-2); shang=4+(n-4)*2,xia1=shang/2,xia2=shang-xia1; fo(i,2,n){ xi=jie[shang]*ni[xia1]%mo*ni[xia2]%mo; ans=(ans+xi*l[i]%mo*cia[n-i]%mo*cib[n-1]%mo)%mo; shang--,xia1--;xia2=shang-xia1; } shang=4+(n-4)*2,xia1=shang/2,xia2=shang-xia1; fo(i,2,n){ xi=jie[shang]*ni[xia1]%mo*ni[xia2]%mo; ans=(ans+xi*t[i]%mo*cib[n-i]%mo*cia[n-1]%mo)%mo; shang--,xia1--;xia2=shang-xia1; } printf("%lld\n",ans);}
1 0
- 【NOIP模拟】Matrix
- noip提高组模拟Matrix
- NOIP模拟 Matrix 矩阵运算
- JZOJ__Day 1【NOIP普及模拟】MATRIX
- Noip模拟
- (noip 模拟 Matrix)<逃避矩阵乘法的好方法#滑稽>
- 【NOIP模拟】20151004模拟
- 【NOIP模拟】 20151005模拟
- 【NOIP模拟】 20151006模拟
- 【NOIP模拟】 20151007模拟
- 【NOIP模拟】20151014模拟
- 【NOIP模拟】20151015模拟
- 【09 NOIP 模拟】light
- [NOIP模拟]Day1
- 8.9CH NOIP模拟
- 8.10FCH NOIP模拟
- 8.13NOIP模拟
- 8.14NOIP模拟
- 快速排序
- Longest Common Prefix解题报告
- Git(二)-Git实战操练
- HDU 1166再来一个基础线段树
- 909422229__Mysql全部精华总结
- 【NOIP模拟】Matrix
- c++继承经典案例
- 【幻化万千戏红尘】qianfengDay28-XML解析之SAX和PULL解析基础学习:
- 【zzuliOJ】1919 - 晴天分数字(二分)
- Android第三方应用分享图文到微信朋友圈 & 微信回调通知分享状态
- 几个关于Android Studio的问题及解决方案
- zzulioj 1918 (二分图--最大匹配)
- git学习
- poj 3087 Shuffle'm Up