#P11897. 「LAOI-9」多维空间中的游戏

    ID: 11254 远端评测题 1000~2000ms 512MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>多项式O2优化快速沃尔什变换 FWT单位根反演

「LAOI-9」多维空间中的游戏

题目背景

我爱你,所以想和你玩游戏。

而不是我想和你玩游戏,所以爱你。

她静静地凝视着你,目光却与往常截然不同——她的脸颊泛起一片绯红,呼吸也变得急促。

你明白,这注定是一场无法善终的相遇,神明已经悄然否定了你们的未来。

虽然你从未见过神明,但你确信无疑,神明已然做出了选择:将她召回那遥远的多维世界。

她是来自更高维度的存在,因为某种未知的原因降维至此。在那个街头,所有人都以一种奇怪的眼神看着你的时候,你收留下了流浪街头、饥肠辘辘的她。

她,只不过是以一种恰好符合你审美与期待的模样出现。

而你,只不过是一个平凡无奇的普通人,相貌平平、能力平平,在浩瀚宇宙中微不足道。

你不明白,为何她会对你心生好感?

你不明白,为何她愿意与你一同游戏?

你不明白,为何你,也会对这场分离,感到悲痛流涕?

你对她绝对没有感情的!

你对她没有感情的。

你对她没有感情?

然而,神明的意志终究不可违逆。她将被驱散回多维世界。就在离别前夕,她开口说道:

「我想再和你玩一次……多维空间中的游戏……」

就算你赢了,也改变不了什么。

题目描述

A\mathbf A 和小 B\mathbf B 正在玩一个有趣的游戏。

游戏将在一个 2×2×2××2k2\underbrace{2\times2\times2\times\cdots\times2}_{k 个 2}kk 维空间中进行。最小的节点的坐标为 (0,0,0,,0k0)(\underbrace{0,0,0,\cdots,0}_{k个0}),最大的节点的坐标为 (1,1,1,,1k1)(\underbrace{1,1,1,\cdots,1}_{k个1})

下面是 k=3k=3 时的情况:

A\mathbf A 和小 B\mathbf B 各执一枚 kk 维空间中的点。

A\mathbf A 和小 B\mathbf B 轮流操作,小 A\mathbf A 先手。

定义一个维度为可操作的,当且仅当两个点中存在至少一个点在这个维度上的坐标不为 00。然后,操作方可以将两个点的某个可操作的维度的坐标置为 00

如图,这是一个合法的操作:

这也是一个合法的操作:

但是这不是一个合法的操作,因为两个点在这个维度上的坐标均为 00

无法操作者输。

相信大家一定发现了,我们可以将任意一个坐标编码为一个二进制数。例如对于坐标 (0,1,1,1,0,0,1,0)(0,1,1,1,0,0,1,0),可以编码为 01110010\tt 01110010,对应十进制数 114114

A\mathbf AB\mathbf B 将进行 qq 轮游戏。两人绝顶聪明,都想要自己赢。每一轮双方点的位置将会随机生成,进一步地,生成到编码为 xx 的坐标的概率为 pxp_x

由于小 A\mathbf A 先手,所以每轮她们将会划定一个可落子区域 [l,r][l,r],其他区域则为不可落子区域。如果小 A\mathbf A 初始的点坐标编码后的值在区间 [l,r][l,r] 外,则将会判为小 B\mathbf B 胜。(此规则对小 B\mathbf B 不生效,也就是即使小 B\mathbf B 初始的点坐标编码后的值在区间 [l,r][l,r] 外,也不会直接判为小 A\mathbf A 胜)

现在对于第 ii 轮,可落子区域为 [li,ri][l_i,r_i],小 B\mathbf B 会有 aia_i 个询问,每个询问为当她的点被随机到编号为 xx 的坐标,且小 A\mathbf A 的点按照 pp 的概率随机生成时,她的胜率为多少。答案对 998244353998244353 取模。

输入格式

第一行一个正整数 cc 表示子任务编号,特殊地,样例的编号为 00

接下来一行一个正整数 tt 表示数据读入输出方法。当 t=1t=1 时,你需要在下一行接着读入一个整数 seedseed 表示随机种子。

接下来一行一个正整数 kk 表示维度数。

接下来一行 2k2^k 个非负整数 p0,p1,,p2k1p_0,p_1,\cdots,p_{2^{k}-1} 表示生成到编码为 xx 的坐标的概率为 pxp_x

接下来一行一个正整数 qq 表示游戏轮数。

接下来 qq 组询问,对于第 ii 组询问(下标从 11 开始):

每组询问第一行三个整数,表示 ai,li,ria_i,l_i,r_i

t=0t=0 时,接下来一行 aia_i 个整数 xi,1,xi,2,,xi,aix_{i,1},x_{i,2},\cdots,x_{i,a_i},表示每次小 B\mathbf B 的询问。

t=1t=1 时,接下来小 B\mathbf B 的第 jj 个询问(下标从 11 开始)xi,jx_{i,j}seed×i×j×50007mod(2k)seed\times i\times j\times 50007\bmod (2^k)

对于 C++ 选手,我们下发了一份数据读入模板 down.cpp,您只需要完善其中的代码部分即可。

输出格式

t=0t=0 时,对于第 ii 组询问输出一行 aia_i 个整数,表示这组询问所有答案模 998244353998244353 后的值。

t=1t=1 时,对于每组询问输出一行一个整数,表示这组询问所有答案模 998244353998244353 后的异或和。

输入数据 1

0
0
2
0 1 998244351 2
2
1 2 3
2
2 0 1
2 3

输出数据 1

3
1 1

输入数据 2

0
1
50007
3
1 2 3 4 5 6 7 998244326
1
2 0 7

输出数据 2

0

提示

样例 1 解释

对于第一组询问,当小 A\mathbf A 的点在编号为 11 的坐标时,由于超出了可落子区域,小 B\mathbf B 胜;当小 A\mathbf A 的点在编号为 22 的坐标时,小 A\mathbf A 胜;当小 A\mathbf A 的点在编号为 33 的坐标时,小 B\mathbf B 胜。

故在模意义下,小 B\mathbf B 的胜率:1+2=31+2=3

样例 2 解释

解码后,x1,1=1,x1,2=2x_{1,1}=1,x_{1,2}=2,答案分别为 18,1818,18,异或和为 00

本题目采用捆绑测试

子任务编号 kk\le qq\le aia_i\le 时间限制 特殊性质 分值
00 55 3030 1 秒 样例 00
11 55
22
33 1010 300300 100100 2020
44 1515 100100 2152^{15} t=1t=1
55 1616 10001000 100100 1010
66 20002000 30003000 t=1t=1
77 30003000 2152^{15} 2 秒 3030

对于 100%100\% 数据,满足 1k16,1q3000,0pi<998244353,1ai215,0liri<2k,0xi,j<2k,t{0,1},0seed500071\le k\le 16,1\le q\le 3000,0\le p_i<998244353,1\le a_i\le 2^{15},0\le l_i\le r_i< 2^k,0\le x_{i,j}< 2^k,t\in\{0,1\},0\le seed\le 50007。保证 i=02k1pi1(mod998244353)\sum_{i=0}^{2^k-1}p_i\equiv1\pmod{998244353}

本题输入输出量大,请使用较快的输入输出方式。