【jzoj4709】【Matrix】
来源:互联网 发布:在淘宝开一个店多少钱 编辑:程序博客网 时间:2024/04/26 09:17
题目大意
解题思路
显然每个l和t的贡献是独立的,向右走就是乘一个a,向下走就是乘一个b,走到终点的a和b的个数可以算出来,系数就是走到终点的方案数,用组合数算就行了。
code
#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LF double#define LL long long#define fo(i,j,k) for(int i=j;i<=k;i++)#define fd(i,j,k) for(int i=j;i>=k;i--)using namespace std;int const maxn=100000,maxk=60,inf=2147483647;LL n,a,b,l[maxn+10],t[maxn+10],aa[maxn+10],bb[maxn+10],ta[maxn*2+10],mod=1000000007;LL Pow(LL x,int y){ LL z=1; for(;y;){ if(y&1)z=(z*x)%mod; x=(x*x)%mod; y/=2; } return z;}LL c(LL x,LL y){ return ((ta[x]*Pow(ta[y],mod-2))%mod*Pow(ta[x-y],mod-2))%mod;}int main(){ freopen("d.in","r",stdin); freopen("d.out","w",stdout); scanf("%lld%lld%lld",&n,&a,&b); aa[0]=bb[0]=ta[0]=ta[1]=1; fo(i,1,n)scanf("%lld",&l[i]),aa[i]=(aa[i-1]*a)%mod; fo(i,1,n)scanf("%lld",&t[i]),bb[i]=(bb[i-1]*b)%mod; fo(i,2,n*2)ta[i]=(ta[i-1]*i)%mod; LL ans=0; if(n==1){ printf("%lld",l[1]); return 0; } fo(i,2,n) ans=(ans+((((l[i]*aa[n-1])%mod*bb[n-i])%mod+((t[i]*aa[n-i])%mod*bb[n-1])%mod)*c(n-2+n-i,n-i))%mod)%mod; printf("%lld",ans); return 0;}
0 0
- 【jzoj4709】【Matrix】
- JZOJ4709. Matrix
- 【JZOJ4709】Matrix
- [JZOJ4709] Matrix
- 【JZOJ4709】Matrix
- Jzoj4709 Matrix
- JZOJ4709 matrix 组合数
- JZOJ4709. 【NOIP2016提高A组模拟8.17】Matrix
- 【JZOJ4709】【NOIP2016提高A组模拟8.17】Matrix
- 《Matrix》
- Matrix
- Matrix
- Matrix
- Matrix
- Matrix
- Matrix
- mAtrix
- Matrix
- 我国人口预计 15 年内是会逐渐分散在大中小城市,还是继续向大城市集中?我们应留在大城市发展吗?
- The Rise of Worse is Better
- 高质量C++/C编程指南(林锐)
- 小胖说事-------tabbar去掉横线的方法
- http session cookie 关系总结
- 【jzoj4709】【Matrix】
- SuperMap iObject常见问题解答集锦(七)
- 怎样自动将word转换成为PDF文件
- VIM中cscope的快捷键操作方法
- 大三前端实习日志
- linux系统信息
- Eclipse调试(2)各种类型断点设置
- #170 Rotate List
- MyBatis插入数据返回主键