【JZOJ4709】【NOIP2016提高A组模拟8.17】Matrix
2024-10-08 01:43:00
题目描述
输入
输出
样例输入
4 3 5
4 1 7 3
4 7 4 8
样例输出
59716
数据范围
解法
40%暴力即可;
60%依然暴力;
100%依次计算第一行和第一列对答案的贡献即可:
可以知道f[i][j]对答案的贡献=a^(n-i)*b^(n-j)*C(n-i+n-j,n-j)
然后利用逆元计算组合数,快速幂快速算出答案即可。
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define ll long long
#define sqr(x) ((x)*(x))
#define ln(x,y) ll(log(x)/log(y))
using namespace std;
const char* fin="aP1.in";
const char* fout="aP1.out";
const ll inf=0x7fffffff;
const ll maxn=100007;
const ll mo=1000000007;
ll n,m1,m2,i,j,k;
ll ans,f[maxn*2];
ll qpower(ll a,ll b){
ll c=1;
while (b){
if (b%2) c=(c*a)%mo;
a=(a*a)%mo;
b/=2;
}
return c;
}
ll niyuan(ll a){
return qpower(a,mo-2);
}
ll c(ll a,ll b){
return f[a]*niyuan(f[b])%mo*niyuan(f[a-b])%mo;
}
int main(){
scanf("%d%d%d",&n,&m1,&m2);
f[0]=1;
for (i=1;i<=n*2;i++) f[i]=f[i-1]*i%mo;
for (i=1;i<=n;i++) {
scanf("%d",&j);
if (i>1) ans=(ans+qpower(m1,n-1)*qpower(m2,n-i)%mo*j%mo*c(n-2+n-i,n-2))%mo;
}
for (i=1;i<=n;i++) {
scanf("%d",&j);
if (i>1) ans=(ans+qpower(m1,n-i)*qpower(m2,n-1)%mo*j%mo*c(n-2+n-i,n-2))%mo;
}
printf("%lld",ans);
return 0;
}
最新文章
- 运行Shell脚本的几种方式解析
- 10天学会phpWeChat——第一天:核心框架的目录结构
- unity, 按类型查找文件
- oracle忘记sys/system/scott用户密码了,如何重置oracle密码?
- HTML标签_01
- C#值类型以及默认值记录下
- 一种协程的 C/C++ 实现
- windowIsTranlucent 属性
- poj 1273 Drainage Ditches_最大流模版
- 携带cookie的跨域访问
- Learning-Python【4】:Python流程控制与循环
- HIkari线程池调优
- C# Bitmap长宽参数构造的图片对象的每个像素ARGB都是0
- ActiveMQ队列特性:删除不活动的队列(Delete Inactive Destinations)
- ZetCode PyQt4 tutorial Dialogs
- java基础需要掌握的内容
- s:iterator巧妙控制跳出循环
- 转:sock_ev——linux平台socket事件框架(基于字节流的测试程序) .
- db缓存设计
- 小程序内嵌H5——判断小程序环境的坑
热门文章
- Could not resolve placeholder &#39;CUST_INDUSTORY&#39; in string value ";${CUST_INDUSTORY}";
- activiti 连线
- [JLOI2015]战争调度【暴力+树形Dp】
- Leetcode139. Word Break单词拆分
- UOJ261 【NOIP2016】天天爱跑步 LCA+动态开点线段树
- javascript 的原始数据类型
- axios post请求后台接收不到参数 和 一些配置问题
- PAT甲级——A1027 Colors in Mars
- [转载] OpenCV2.4.3 CheatSheet学习(三)
- Python之通配符--提取文件中的内容并输出