2295. Day10 Ex2 - Subset Add Subset Sum

对一个有 n 种元素的集合 U(内部元素依次标号 1,2,\dots,n-1,n),初始其所有子集均有为 0 的权值,依次给出 q 个以下形式的指令。

  • 0 m a1 ... am x :对包含每个 a_i (i \in [1,m]) 的集合,将它们的权值加上 x
  • 1 m a1 ... am :输出 {a_i|i \in [1,m]} 所有子集权值之和对 998244353 取模的值。

输入

第一行两个正整数 n,q (0 \leq n \leq 20,1 \leq q \leq 2 \times 10^5),分别表示集合 U 的大小与指令的个数。

随后 q 行每行一条指令 (0 \leq m \leq n,1 \leq a_i \leq n,1 \leq x \leq 10^9) ,具体格式见上。

保证对同一条指令,有 i \neq j \Leftrightarrow a_i \neq a_j

数据保证所有形如 0 m a1 ... am x 的操作出现在所有形如 1 m a1 ... am 的操作之前。

输出

对每个形如 1 m a1 ... am 的指令,输出一行一个整数,表示 {a_i|i \in [1,m]} 所有子集权值之和对 998244353 取模的值。

样例

标准输入 复制文本
2 10
0 2 1 2 998244344
0 1 1 1
0 1 2 8
1 1 1
1 2 1 2
1 1 1
1 2 1 2
1 1 2
1 1 1
1 0
标准输出 复制文本
1
9
1
9
8
1
0

提示

由于 SoCodingOJ 的 KaTeX 渲染有一些问题,这里暂时用圆括号代替原本表示集合的花括号。

U 的所有子集初始权值为 0(\emptyset)=0,(1)=0,(2)=0,(1,2)=0

0 2 1 2 998244344(\emptyset)=0,(1)=0,(2)=0,(1,2)=998244344

0 1 1 1(\emptyset)=0,(1)=1,(2)=0,(1,2)=998244345

0 1 2 8(\emptyset)=0,(1)=1,(2)=8,(1,2)=998244353

1 1 1(\emptyset)+(1)=0+1=1

1 2 1 2(\emptyset)+(1)+(2)+(1,2)=0+1+8+998244353=998244362\ (\bmod 998244353=9\ )

1 1 2(\emptyset)+(2)=0+8=8

1 0(\emptyset)=0

登录以提交代码。
单点时限 1 秒
内存限制 128 MB
提交 6
通过 2