luogu#P16329. bloom

    ID: 16156 远端评测题 3000ms 512MiB 尝试: 0 已通过: 0 难度: 8 上传者: 标签>动态规划 DP洛谷原创O2优化动态规划优化前缀和洛谷月赛

bloom

背景

题目描述

给定 n,mn,m,和两个长为 nn 的序列 aia_ipip_iaia_i 一些位置确定,一些不确定,每个位置有类型 0,10,1。你要给不确定的 aia_i 赋值,使得 ai1,ai=ma_i \ge 1,\sum a_i=m。求对于所有 aa 的赋值方式的以下游戏的权值和对 998244353998244353 取模的结果。

  • 游戏将进行 2n2^n 轮,第 xx 轮开始时第 ii 个人的血量 bib_i 设置为 aia_i,类型为 x1x-1 的二进制表示下第 i1i - 1 位的值。xx 的取值从 11 开始。

  • 每轮开始时,所有类型 11 的人开始同时往右走,类型 00 的人不动,每过 11 单位时间移动一格。

  • 若一个类型 11 碰到类型 00 的点,设两人的编号为 i,ji,jt=min(bi,bj)t = \min(b_i,b_j)同时执行 bibit,bjbjtb_i \leftarrow b_i - t,b_j \leftarrow b_j - tbi=0b_i = 0 的人将会消失。

  • 这一轮的权值为过了 1010010^{100} 单位时间后所有存在的人的初始pp 的乘积。(若最后所有人死亡,则权值为 11

  • 游戏的权值为 2n2^n 轮的权值之和。

输入格式

第一行两个正整数 n,mn,m

第二行 nn 个非负整数 aia_i,其中 ai=0a_i = 0 表示未确定的位置。

第三行 nn 个正整数 pip_i 表示每个人的初始权值。

输出格式

一行一个整数,表示所有情况的游戏权值之和。

2 3
1 2
2 2
14
4 4
1 1 0 0
2 2 3 3
239

6 10
0 1 1 0 0 2
743619643 294476845 718152187 194051637 59774782 188785641
285625840

提示

【样例解释 1】

游戏将进行 44 轮:

  • 11 轮时,两个人的类型分别为 0,00,0,都能活到最后,权值为 2×2=42\times 2 = 4

  • 22 轮时,两个人的类型分别为 1,01,0,此时在经过 11 单位时间后两人相撞,生命值变为 0,10,1,只有第二个人活下来,权值为 22

  • 33 轮时,两个人的类型分别为 0,10,1,都能活到最后,权值为 44

  • 44 轮时,两个人的类型分别为 1,11,1,都能活到最后,权值为 44

所以总权值为 4+2+4+4=144+2+4+4=14

【数据范围】

本题使用子任务捆绑

对于所有测试数据,1n,m5001\le n,m\le 5000aim0\le a_i \le m1pi<9982443531\le p_i < 998244353,保证至少存在一组合法的 aa

子任务编号 n,mn,m\le 特殊性质 分值
11 88 1010
22 5050 2020
33 100100
44 500500
55 3030

特殊性质:保证 m=nm=n