#Contest5E. 5E | 波特检测

5E | 波特检测

贡献名单

想法 标程 数据 验题 题解
喵仔牛奶 紊莫 喵仔牛奶

题目背景

正在验证您是否是真人。这可能需要几秒钟时间。

题目描述

小 H 是一个 bot,他内置一个序列 {An}\{A_n\} 和一个长度为 nn 的 01 串 HH。询问他一个区间 [l,r][l,r],他可以给出一个集合 g(l,r)g(l,r):

  • 设置序列 {Bn}\{B_n\},对于 i=1,2,,ni=1,2,\ldots,n,执行以下操作:
    • 如果 Hi=0H_i=\tt{0}Bi=AiB_i=A_i(即小 H 不能修改 AiA_i 的值);
    • 如果 Hi=1H_i=\tt{1},可以任意选择一个非负整数 vv,令 Bi=vB_i=v(即小 H 可以任意修改 AiA_i 的值,修改后的值可以不在 [0,2k1]\boldsymbol{[0,2^k-1]} 范围内)。
  • $g(l,r)=\{B_l\operatorname{xor}B_{l+1},B_{l+1}\operatorname{xor}B_{l+2},\cdots,B_{r-1}\operatorname{xor}B_{r}\}$。

喵仔牛奶需要对小 H 进行若干次检测,每次选取 [l,r],[L,R][l,r],[L,R] 两个区间,满足 rLr\le L,并向小 H 询问得出 g(l,r),g(L,R)g(l,r),g(L,R)。若 g(l,r)g(L,R)g(l,r)\cap g(L,R)\neq\varnothing,则检测失败,小 H 的 bot 身份会被发现。

若小 H 存在一种策略可以回答所有可能的询问并不存在检测失败(也就是对于任意满足 rLr\le L 区间 [l,r],[L,R][l,r],[L,R] 都不会检测失败),我们就称这个 01 串 HH 是「可用的」。

给定 n,kn,k,序列 {An}\{A_n\} 的每一项都在 [0,2k1][0,2^k-1] 中均匀随机选取。你需要求出「可用的」01 串 HH 的个数的期望值。答案对 998244353998244353 取模。

输入格式

一行两个非负整数 n,kn,k,表示序列长度与值域大小。

输出格式

一行一个非负整数,表示「可用的」01 串 HH 的个数的期望值对 998244353998244353 取模后的结果。

如果你不知道如何进行有理数取模:

  • M=998244353M=998244353。可以证明,答案可以被表示为最简分数 pq\frac{p}{q},其中 ppqq 是正整数且 q≢0(modM)q\not\equiv 0\pmod M。你只需要输出一个非负整数 x[0,M)x\in[0,M) 使得 xqp(modM)x\cdot q\equiv p\pmod M
  • 如果你不知道如何找出所述的 xx,可以参考 P2613。

样例 #1

样例输入 #1

1 0

样例输出 #1

2

样例 #2

样例输入 #2

2 1

样例输出 #2

4

样例 #3

样例输入 #3

3 1

样例输出 #3

499122184

样例 #4

样例输入 #4

5 2

样例输出 #4

655097885

样例 #5

样例输入 #5

10 3

样例输出 #5

972670600

样例 #6

样例输入 #6

114 514

样例输出 #6

802524221

提示

样例 1 解释

唯一一种可能的情况是 A=[0]A=[0],此时 H=0H=\tt 0H=1H=\tt 1 都是「可用的」,故答案为 22

样例 2 解释

有以下 44 种可能的情况:

  • A=[0,0]A=[0,0]
  • A=[0,1]A=[0,1]
  • A=[1,0]A=[1,0]
  • A=[1,1]A=[1,1]

在不修改的情况下,它们都能通过检测(对应的答案均为 22=42^2=4),故答案为 22=42^2=4

样例 3 解释

有以下 88 种可能的情况:

  • A=[0,0,0]A=[0,0,0]HH 的个数为 77
  • A=[0,0,1]A=[0,0,1]HH 的个数为 88
  • A=[0,1,0]A=[0,1,0]HH 的个数为 77
  • A=[0,1,1]A=[0,1,1]HH 的个数为 88
  • A=[1,0,0]A=[1,0,0]HH 的个数为 88
  • A=[1,0,1]A=[1,0,1]HH 的个数为 77
  • A=[1,1,0]A=[1,1,0]HH 的个数为 88
  • A=[1,1,1]A=[1,1,1]HH 的个数为 77

A=[0,1,0]A=[0,1,0] 时,H=000H=\tt{000} 不是「可用的」。当询问 [1,2],[2,3][1,2],[2,3] 时:

  • 小 H 每次只能原封不动地保留 AA
  • 当询问 [1,2][1,2] 时,g(1,2)={1}g(1,2)=\{1\}
  • 当询问 [2,3][2,3] 时,g(2,3)={1}g(2,3)=\{1\}
  • g(1,2)g(2,3)={1}g(1,2)\cap g(2,3)=\{1\},检测失败。

A=[1,1,1]A=[1,1,1] 时,H=010H=\tt{010} 是「可用的」。当询问 [1,2],[2,3][1,2],[2,3] 时:

  • 小 H 可以任意修改 AA 的值,并且每次询问时修改的值可以不一样
  • 当询问 [1,2][1,2] 时,小 H 令 B=[1,2,1]B=[1,2,1]g(1,2)={3}g(1,2)=\{3\}
  • 当询问 [2,3][2,3] 时,小 H 令 B=[1,1,1]B=[1,1,1]g(2,3)={0}g(2,3)=\{0\}
  • g(1,2)g(2,3)=g(1,2)\cap g(2,3)=\varnothing,检测成功。

故答案为 $(7\times 4+8\times 4)\times\dfrac{1}{8}=\dfrac{15}{2}$。

注意到 2×49912218415(mod998244353)2\times 499122184\equiv 15\pmod{998244353},答案即为 499122184499122184

样例 4 解释

答案为 90732655097885(mod998244353)\dfrac{907}{32}\equiv655097885\pmod{998244353}

数据规模与约定

本题采用捆绑测试。

  • Subtask 1(10 pts):n2n\leq2
  • Subtask 2(10 pts):n6n\leq 6k2k\leq 2
  • Subtask 3(10 pts):n50n\leq 50k6k\leq6
  • Subtask 4(10 pts):n500n\leq 500k20k\leq 20
  • Subtask 5(20 pts):n2×103n\leq 2\times10^3
  • Subtask 6(20 pts):n5×104n\leq 5\times10^4
  • Subtask 7(20 pts):无特殊限制。

对于所有数据,1n1061\leq n\leq 10^60k1090\leq k\leq 10^9