#P9398. 「DBOI」Round 1 烟花

    ID: 8594 Type: RemoteJudge 1000ms 256MiB Tried: 0 Accepted: 0 Difficulty: 6 Uploaded By: Tags>数学O2优化树论组合数学排列组合期望

「DBOI」Round 1 烟花

题目背景

回忆本身就是惩罚,惩罚那些不愿往前走的人,将他们困在那条小巷子里,怎么也走不出去。

每一年都有烟花,唯独那一年的烟花最好看。

“我要对烟花许愿,许我们永远在一起。”

“就算不许愿,我们也会永远在一起的。”

再后来,死了的人被葬在了那座山上,活着的人被记忆困在了那条巷中。今天的我们听到这个故事,只是想再放一次故事里的烟花,放给那些再没能陪身旁的人看到一次烟花的人。

题目描述

烟花在夜空中绽放连成一片,我们把这些连成一片的烟花看成一棵含有 nn 个点的有根树,根为最早点燃的烟花 11

烟花有红蓝两种颜色,为了方便,我们对这棵树黑白染色。最初有 pp 个限制,一条限制形如 (xi,yi)(x_i,y_i),表示树中编号为 xix_i 的点的子树中黑点只能恰好yiy_i 个。当年,他们认为满足其子树内所有有限制点的限制的子树是均好的子树。显然,要想使一个子树成为均好的子树,可能有多种染色方法

你需要回答以下两种询问:

  • Z k c,表示给点 kk 以均等概率在 [0,c][0,c] 中选择一个数 ff,然后给点 kk 直接加上 ff 个没有限制的儿子,其它儿子状态不变。问点 kk 为根的子树成为均好的子树的期望染色方法数量。
  • H k,表示如果去掉 kk 的所有有限制儿子的限制,询问 kk 为根的子树成为均好的子树的染色方法数量。

我们并没有必要点燃更多的烟花,因此所有的询问都是相互独立的,没有询问会真的影响原树。

我们深知可能复现不了当时完整的情况,历史太过斑驳,可能的烟花组合成千上万,因此你只需要得到答案对 998244353998244353 这个大质数取模的值。

输入格式

第一行两个整数 n,pn,p,表示树的节点个数与限制个数。

接下来 n1n-1 行,每行两个数 u,vu,v,表示 u,vu,v 之间有一条直连边。这 n1n-1 行表示树的结构。

接下来 pp 行,每行两个数 (xi,yi)(x_i,y_i),表示限制以 xix_i 点为根的子树,需要恰好存在 yiy_i 个黑点在其子树内。

接下来一行一个整数 qq,表示询问个数。

接下来 qq 行,每行一个字符另加 1122 个整数表示题目中说明的询问。

输出格式

为了减小输出量,我们假设第 ii 个询问(ii11 开始)的答案为 ansians_i,你只需要输出一行,表示所有询问的 i×ansii\times ans_i 的异或和。最终的异或和以及每一个 i×ansii\times ans_i无需998244353998244353 取模,但每个询问的答案 ansians_i 是对其取模后的答案。

注意:std 不依赖于输出方式。也就是说,std 可以独立获取每一个询问的答案。

14 5
1 2
1 3
4 1
5 2
2 6
3 7
3 8
9 4
12 6
11 6
6 10
8 13
14 8
2 3
10 0
7 1
13 1
14 0
10
Z 2 5
H 14
Z 7 3
Z 7 1
H 6
Z 1 9
H 1
H 8
H 12
Z 10 1
665340330

提示

样例解释

如图为样例 #1 的烟花,构成一个有 1414 个点,其中 55 个限制点的树。与题目中不同的是,我们用红色烟花表示限制点,蓝色烟花表示无限制点。红色烟花右上角的浅蓝色数字表示其限制的黑点数量。

初始情况下每一个点为根子树的合法烟花燃放方法数量如下(从左至右第 ii 项表示以第 ii 个点为根的子树的答案):

[320,10,4,4,2,8,1,2,2,1,2,2,1,1][320,10,4,4,2,8,1,2,2,1,2,2,1,1]

下面我们给出询问的答案与部分解释:

  • Z 2 5,为 22 号点添加 ii 个儿子后的 22 号点子树内合法烟花燃放数量表示为此数列的第 i+1i+1 项:[10,20,35,56,84,120][10,20,35,56,84,120]。总期望即为 3256\frac{325}{6}。对 998244353998244353 取模之后得到 166374113166374113
  • H 14,由于 1414 号点没有儿子,因此答案仍然为 11
  • Z 7 3,共有 1010 种可能的合法烟花燃放方案,总期望即为 52\frac{5}{2},对 998244353998244353 取模之后得到 499122179499122179
  • Z 7 1 的答案为 499122178499122178
  • H 6 的答案为 1616
  • Z 1 9 的答案为 3273632736
  • H 1,去除 11 的所有有限制儿子(仅有节点 22)的限制后有 10241024 种可能的合法烟花燃放方案。
  • H 8 的答案为 88
  • H 12 没有儿子,因此答案不变,此询问的答案仍然为 22
  • Z 10 1 的答案为 11

最终,所有询问的 i×ansii\times ans_i 的异或和即为 665340330665340330

数据范围

请注意常数因子对程序效率的影响。

本题采用捆绑测试与子任务依赖。

下面定义 S=3×105S=3\times 10^5

Subtask\rm Subtask nn qq yiy_i cc 特殊性质 得分 子任务依赖
11 10\leqslant 10 5\leqslant 5 1010
22 200\leqslant 200 1515 11
33 S\leqslant S 10\leqslant 10 2020 1,21,2
44 S\leqslant S AA 1515
55 BB 2020
66 1,2,3,4,51,2,3,4,5

特殊性质 AAp=0p=0

特殊性质 BB:满足不存在 Z 询问。

对于 100%100\% 的数据,存在输入的所有数均为 S\leqslant S 的整数。特别地,存在 0pn0\leqslant p\leqslant n,输入的任何树的节点编号 xx 都满足 1xn1\leqslant x \leqslant n。保证输入的询问字符都为 ZH,输入的一定是一棵树。保证对于所有限制存在 xixj(ij)x_i\neq x_j(i\neq j)


冬天的最后一场雪如约而至,很快又要迎来一个新的春天。万物都在等待复苏,可峰城里的一个小巷子,再也不复往日繁荣。

八十多年过去,我们早已找不到当初的巷子,只留下这样一个故事。

感谢你放的烟花。