#P5326. [ZJOI2019] 开关

[ZJOI2019] 开关

题目描述

九条可怜是一个贪玩的女孩子。

这天,她和她的好朋友法海哥哥去玩密室逃脱。在他们面前的是 nn 个开关,开始每个开关都是关闭的状态。要通过这关,必须要让开关达到指定的状态。目标状态由一个长度为 nn0101 数组 ss 给出,si=0s_i = 0 表示第 ii 个开关在最后需要是关着的,si=1s_i = 1 表示第 ii 个开关在最后需要被打开。

然而作为闯关者,可怜和法海并不知道 ss。因此他们决定采用一个比较稳妥的方法:瞎按。他们根据开关的外形、位置,通过一些玄学的方法给每一个开关赋予了一个权值 pip_ipi>0p_i > 0)每一次,他们会以正比于 pip_i 的概率(第 ii 个开关被选中的概率是 pij=1npj\frac{p_i}{\sum^n_{j=1}p_j} 选择并按下一个开关。开关被按下后,状态会被反转,即开变关,关变开。注意,每一轮的选择都是完全独立的。

在按开关的过程中,一旦当前开关的状态达到了 ss 那么可怜和法海面前的门就会打开,他们会马上停止按开关的过程并前往下一关。作为一名欧皇,可怜在按了 i=1nsi\sum^n_{i=1} s_i 次后,就打开了大门。为了感受一下自己的运气是多么的好,可怜想要让你帮她计算一下,用这种随机按的方式,期望需要按多少次开关才能通过这一关。

输入格式

第一行输入一个整数 nn,表示开关的数量。
第二行输入 nn 个整数 sis_isi{0,1}s_i\in \{0,1\}),表示开关的目标状态。第三行同样输入 nn 个整数 pip_i,表示每个开关的权值。

输出格式

输出一行一个整数,表示答案对 998244353998244353 取模后的值。即如果答案的最简分数表示为,xy\frac{x}{y}x0x \ge 0y1y \ge 1gcd(x,y)=1\gcd(x, y) = 1),你需要输出 x×y1mod998244353x \times y^{-1} \bmod 998244353

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

提示

【样例解释 #1】

前两次按开关,有 12\frac12 的概率达到 ss,有 12\frac12 的概率回到原状。因此期望的按开关数量为:

$$\sum^{+\infty}_{i=1}2i\times \left(\frac12\right)^i=4 $$

【数据范围与约定】

测试点 nn 其他约定 测试点 nn 其他约定
11 =2=2 66 100\le 100 pi2,si=1p_i\le 2,s_i=1
22 77
33 8\le 8 88 pi2×103\sum p_i\le 2\times 10^3
44 99
55 100\le 100 pi=1p_i=1 1010

对于 100%100\% 的数据,保证 n1n\ge1i=1npi5×104\sum^n_{i=1}p_i\le5\times10^4pi1p_i\ge1