[CSP-S模拟测试]:工业题/a(数学)

题目传送门(内部题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

样例输出:

50807


数据范围与提示

$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++

原文地址:https://www.cnblogs.com/wzc521/p/11498454.html

时间: 2024-11-05 11:45:54

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

[CSP-S模拟测试]:画作(BFS+数学)

题目描述 小$G$的喜欢作画,尤其喜欢仅使用黑白两色作画.画作可以抽象成一个$r\times c$大小的$01$矩阵.现在小$G$构思好了了他的画作,准备动笔开始作画.初始时画布是全白的,他每一次下笔可以将一个四联通的部分涂成黑色或白色.你需要告诉他,在给出的构思下,他最少需要下笔多少次才能完成画作. 输入格式 第一行两个正整数$r,c$.接下来$r$行,每行$c$个字符,表示目标画作. 输出格式 输出一行一个正整数,表示最少需要的下笔步数. 样例 样例输入: 3 3010101010 样例输出

[CSP-S模拟测试]:排列组合(数学 or 找规律)

题目描述 $T$组数据,每次给定$n$,请求出下式的值,对$10^9+7$取模: $$C_n^0\times C_n^0+C_n^1\times C_n^1+C_n^2\times C_n^2+...+C_n^n\times C_n^n$$ 输入格式 第一行一个整数$T$,表示数据组数.接下来$T$行,每一行包含一个整数$n$,含义如题所示. 输出格式 输出$T$行,每行包含一个整数,表示对$10^9+7$取模后的答案. 样例 样例输入: 212 样例输出: 26 数据范围与提示 对于$30\%

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

题目传送门(内部题137) 输入格式 第一行,一个正整数$n$. 第二行$n$个正整数$a_1\sim a_n$. 输出格式 输出一个整数,为满足条件的二元组个数. 样例 样例输入: 51 2 3 4 12 样例输出: 2 数据范围与提示 对于$20\%$的数据,满足$n\leqslant 3,000$. 对于$50\%$的数据,满足$n\leqslant 50,000$. 对于另$20\%$的数据,满足$a_i\leqslant 1,000$. 对于$100\%$的数据,满足$1\leqsla

[CSP-S模拟测试]:幻魔皇(数学)

题目描述 幻魔皇拉比艾尔很喜欢斐波那契树,他想找到神奇的节点对. 所谓斐波那契树,根是一个白色节点,每个白色节点都有一个黑色节点儿子,而每个黑色节点则有一个白色和一个黑色节点儿子.神奇的节点对则是指白色节点对. 请问对于深度为$n$的斐波那契树,其中距离为$i$的神奇节点对有多少个?拉比艾尔需要你对于$1\leqslant i\leqslant 2n$的所有$i$都求出答案. 输入格式 一行一个正整数$n$. 输出格式 一行$2n$个整数表示答案,对$123456789$取模. 样例 样例输入:

[CSP-S模拟测试]:异或(数学)

题目描述 给定$L,R$,我们希望你求出:$$\sum\limits_{i=L}^R\sum\limits_{j=L}^R(i\oplus j)$$其中这里的$\oplus$表示异或运算.答案对$10^9+7$取模. 输入格式 第一行一个整数$T$,表示数据组数.接下来$T$行,每行两个整数$L,R(0\leqslant L\leqslant R\leqslant 10^9)$,描述一组数据. 输出格式 每组数据输出一行一个整数,表示答案. 样例 样例输入: 21 20 1023 样例输出: 6

2016年上半年软考真题在线模拟测试,提前知晓你的成绩

2016年上半年软考于5月21日结束了,考试完想知道结果的急切心理,几乎每个经历过上学时代的人都能深刻体验到.如果你想知道你考的怎么样,如果你想要提前知道你的成绩,如果你想知道你哪个地方出错了,如果你想知道你哪个地方知识掌握的不够想要更深入的去理解,那就来希赛软考学院吧!希赛软考学院提供2016年上半年软考真题在线模拟测试,有标准的参考答案,有专业老师的解析视频,让你提前知晓你的成绩,让你再次巩固学习. 希赛授课专家介绍 张友生,计算机应用技术博士,软考培训教程系列丛书主编,考试指定教材<系统分

模拟测试(vj)

做这份模拟测试,已经崩溃了,英文看不懂,题意理解错.到结束了只a了第一题,人生陷入了低谷,于是花了一天的时间终于把不会的弄明白了,在这里写一份总结~ T1,简单的模拟,如果打枪打中一支鸟,将这个位置设为0,并向两边扩散,注意这个位置一定要有鸟. 代码~ #include<bits/stdc++.h> using namespace std; int a[30000]; int n,m; int main() { cin>>n; for(int i=1;i<=n;i++) ci

2018冬令营模拟测试赛(三)

2018冬令营模拟测试赛(三) [Problem A]摧毁图状树 试题描述 输入 见"试题描述" 输出 见"试题描述" 输入示例 见"试题描述" 输出示例 见"试题描述" 数据规模及约定 见"试题描述" 题解 这题没想到贪心 QwQ,那就没戏了-- 贪心就是每次选择一个最深的且没有被覆盖的点向上覆盖 \(k\) 层,因为这个"最深的没有被覆盖的点"不可能再有其它点引出的链覆盖它了,而它又

2018冬令营模拟测试赛(五)

2018冬令营模拟测试赛(五) [Problem A][UOJ#154]列队 试题描述 picks 博士通过实验成功地得到了排列 \(A\),并根据这个回到了正确的过去.他在金星凌日之前顺利地与丘比签订了契约,成为了一名马猴烧酒. picks 博士可以使用魔法召唤很多很多的猴子与他一起战斗,但是当猴子的数目 \(n\) 太大的时候,训练猴子就变成了一个繁重的任务. 历经千辛万苦,猴子们终于学会了按照顺序排成一排.为了进一步训练,picks 博士打算设定一系列的指令,每一条指令 \(i\) 的效果