题目传送门(内部题39)


输入格式

第一行:四个正整数$n$、$m$、$a$、$b$。
第二行:$n$个正整数,第$i$个表示$f(i,0)$。
第三行:$m$个正整数,第$i$个表示$f(0,i)$。


输出格式

第一行:一个整数,代表$f(n,m)\mod 998244353$。


样例

样例输入:

4 4 3 2
1 3 5 7
2 4 6 8

样例输出:


数据范围与提示

$20\%$的数据:$n,m\leqslant 10,a,b\leqslant 3,f(i,0),f(0,i)\leqslant 10$。
$50\%$的数据:$n,m\leqslant {10}^3$。
另外$10\%$的数据:$n=1$。
另外$10\%$的数据:$a=b=1$。
另外$10\%$的数据:$f(i,0)=f(0,i)=1$。
$100\%$的数据:$n,m\leqslant 3\times {10}^5$,其他所有输入数据均在$long\ long$范围内。


题解

对于每一个点$(i,j)$,其到点$(n,m)$的向每个方向需要走的步数都是确定的,走法可以通过组合数计算。

于是点$(i,j)$对答案的贡献就是$f(i,j)\times$走法数$\times a^{m-i}\times b^{n-i}$。

预处理组合数,用快速幂统计答案即可。

时间复杂度:$\Theta(n\log n+m\log m)$。

期望得分:$100$分。

实际得分:$100$分。


代码时刻

#include<bits/stdc++.h>
using namespace std;
const long long mod=998244353;
long long n,m;
long long a,b;
long long p[300010],q[300010];
long long fac[600010],inv[600010];
long long ans;
long long qpow(long long x,long long y)
{
long long res=1;
while(y)
{
if(y&1)res=res*x%mod;
x=x*x%mod;
y>>=1;
}
return res;
}
long long C(long long x,long long y){return 1LL*fac[x]*inv[x-y]%mod*inv[y]%mod;}
int main()
{
scanf("%lld%lld%lld%lld",&n,&m,&a,&b);
a=(a+mod)%mod;
b=(b+mod)%mod;
for(long long i=1;i<=n;i++){scanf("%lld",&p[i]);p[i]=(p[i]+mod)%mod;}
for(long long i=1;i<=m;i++){scanf("%lld",&q[i]);q[i]=(q[i]+mod)%mod;}
fac[0]=inv[0]=1;
for(long long i=1;i<=n+m;i++)
fac[i]=1LL*fac[i-1]*i%mod;
inv[n+m]=qpow(fac[n+m],mod-2);
for(long long i=n+m;i;i--)
inv[i-1]=1LL*inv[i]*i%mod;
for(long long i=1;i<=n;i++)
ans=(ans+C(n+m-1-i,m-1)*qpow(a,m)%mod*qpow(b,n-i)%mod*p[i]%mod)%mod;
for(long long i=1;i<=m;i++)
ans=(ans+C(n+m-1-i,n-1)*qpow(b,n)%mod*qpow(a,m-i)%mod*q[i]%mod)%mod;
printf("%lld",ans);
return 0;
}

rp++

[CSP-S模拟测试]:工业题/a(数学)的更多相关文章

  1. [CSP-S模拟测试]:玄学题/c(数学)

    题目传送门(内部题40) 输入格式 第一行:两个正整数$n$.$m$. 输出格式 第一行:一个整数,代表式子的值. 样例 样例输入1: 4 5 样例输出1: 0样例输入2: 799 8278 样例输出 ...

  2. [CSP-S模拟测试]:C(倍增+数学)

    题目传送门(内部题152) 输入格式 第一行两个整数$N,Q$. 接下来一行$N$个整数,第$i$个为$a_i$. 接下来的$N-1$行,每行两个整数$u,v$.表示$u,v$之间有一条边. 接下来的 ...

  3. [CSP-S模拟测试]:B(DP+数学)

    题目传送门(内部题45) 输入格式 第一行$3$个整数$n,m,P$.第二行$m$个整数,表示$m$次询问. 输出格式 一行$m$个整数表示答案. 样例 样例输入1: 2 4 40 1 2 3 样例输 ...

  4. [CSP-S模拟测试]:物理课(数学)

    题目传送门(内部题144) 输入格式 从$physics.in$读入数据. 第一行一个数$T$,代表有$T$组数据.接下来$T$行每行$4$个浮点数,分别为$\theta,v,d,g$,保留到小数点后 ...

  5. [CSP-S模拟测试]:最大或(数学)

    题目传送门(内部题141) 输入格式 输入文件包含多组测试数据,第一行为一个正整数$T$,表示数据组数. 接下来$T$行,每行两个正整数$l,r$.数据保证$l\leqslant r$成立. 输出格式 ...

  6. [CSP-S模拟测试]:平方数(数学+哈希)

    题目传送门(内部题137) 输入格式 第一行,一个正整数$n$. 第二行$n$个正整数$a_1\sim a_n$. 输出格式 输出一个整数,为满足条件的二元组个数. 样例 样例输入: 51 2 3 4 ...

  7. [CSP-S模拟测试]:简单计算(数学)

    题目传送门(内部题104) 输入格式 第一行一个正整数$T$,表示该测试点内的数据组数,你需要对该测试点内的$T$组数据都分别给出正确的答案才能获得该测试点的分数. 接下来$T$组数据,每组数据一行两 ...

  8. [CSP-S模拟测试]:位运算(数学)

    题目传送门(内部题72) 输入格式 输入文件$bit.in$ 每个输入文件包含$T$组测试数据.输入文件的第一行为一个整数$T$,表示数据组数.接下来$T$行,每行表示一组测试数据每组测试数据包括三个 ...

  9. [CSP-S模拟测试]:导弹袭击(数学+凸包+单调栈)

    题目背景 $Guess$准备向敌军阵地发起进攻了!$Guess$的武器是自动制导导弹.然而在机房是不允许游戏的,所以班长$XZY$对游戏界面进行了降维打击,结果... 题目描述 众所周知,环境因素对导 ...

随机推荐

  1. 5 November in 614

    Contest A. ssoj2964 交错的士兵 \(n\) 个数的排列,从左到右依次为 1, 2, -, \(n\).\(n\) 次操作,对于第 \(i\) 次操作,从左到右分成很多段,每段 \( ...

  2. [CSP-S模拟测试]:weight(Kruskal+树链剖分)

    题目描述 给你一个$n$个点$m$条边的带边权的无向图(无重边,无自环),现在对于每条边,问你这条边的权值最大可以是多大,使得这条边在无向图的所有最小生成树中?(边权都是整数). 输入格式 第一行包含 ...

  3. [CSP-S模拟测试]:math(裴蜀定理)

    题目传送门(内部题22) 输入格式 第一行有$2$个整数$n,k$.第二行有$n$个正整数$a_i$. 输出格式 第一行有一个整数$s$,表示可以生成的非负整数的个数.第二行有$s$个可以生成的非负整 ...

  4. SpringBoot 快速构建微服务体系 知识点总结

    可以通过http://start.spring.io/构建一个SpringBoot的脚手架项目 一.微服务 1.SpringBoot是一个可使用Java构建微服务的微框架. 2.微服务就是要倡导大家尽 ...

  5. AsyncTask2

    参考: AsyncTask - 简书http://www.jianshu.com/p/3b839d7a3fcf 前言 在android应用开发过程中,我们需要是时刻注意保证应用程序的稳定和UI操作响应 ...

  6. idea新手教程 如何springmvc创建Maven项目

    1.点击Create project,选择maven,勾选Create from archetype选择web-app,如图 2 输入    Group-Id     //组织名,也是作者名 Arti ...

  7. CSS学习笔记(基础部分)

    一.CSS 简介: CSS 指层叠样式表 (Cascading Style Sheets),用来设置HTML的格式. 语法:选择器 {属性:值;属性:值} 注释://注释内容 /*注释内容*/ 二.C ...

  8. cmd 编码格式

    相当于编辑器的声明为gbk格式编码,输出格式也是gbka = '中文' 就会以gbk编码为str,也只能以gbk解码. reload sys修改默认编码 在不指定编码的时候充当默认解码或者编码格式

  9. js与html中unicode编码的使用

    js中 // unicode在字符串中使用格式:\u四位编码,一定是四位,否则报错 // 显示 @ 符 console.log(`十六进制 unicode 编码 0x0040 对应的字符是:${'\u ...

  10. SQL数据库—<8>触发器

    触发器:一.什么是触发器?    一段SQL代码,挂到某个表的某个增.删.改的操作上.    当这个表执行相应的操作时,就会触发这段相应的SQL代码.触发器与存储过程的区别:1.存储过程是独立于表存在 ...