不知道谁给了没有看懂B题题面的我勇气滚去看C题。
本人的做法跟wangdy类似。(%%%真正的AK巨佬wangdy)
题目大意
同学们在教室传答案,却被老师逮个正着。
全班共有
n
n
n个同学,一学期共有
2
n
2^n
2n次考试,每次考试参与传答案的同学都不完全相同。老师每次考试有一半的概率记录这次考试参与传答案的同学名单,也有一半的概率当做什么也没发生。到了期末,老师检查一下自己记下的名单,找出每次都参与了传答案的同学,作为这学期的始作俑者。特别的,如果老师一学期没有记录任何一次考试的传答案名单,则没有学生是始作俑者。
老师对第
i
i
i个学生的惩罚系数是正整数
a
i
a_i
ai。期末抓出始作俑者之后,算出始作俑者人数
x
x
x和最大的惩罚系数
y
y
y,对全班施加的惩罚量
z
=
x
y
z=xy
z=xy。特别的,如果没有学生是始作俑者,惩罚量为
0
0
0。
求期末惩罚量的期望
E
(
z
)
E(z)
E(z) 。为了方便,输出
E
(
z
)
×
2
2
n
m
o
d
998244353
E(z)\times 2^{2^n}\mod 998244353
E(z)×22nmod998244353。
2 ⩽ n ⩽ 2 12 2\leqslant n\leqslant 2^{12} 2⩽n⩽212。
思路
nodgd造得一手好数据,本人n方做法跑了4s。
一共有 2 n 2^n 2n次考试,每一次考试老师都有记录和不记录两种选择,总的情况就是 2 2 n 2^{2^n} 22n。于是最终答案就是所有情况的惩罚量之和。
考虑枚举始作俑者人数
x
x
x和最大惩罚系数
y
y
y,计算有多少种情况对应
x
,
y
x,y
x,y。记
c
1
[
i
]
c_1[i]
c1[i]为惩罚系数
=
i
=i
=i的人数,
c
2
[
i
]
c_2[i]
c2[i]为惩罚系数
⩽
i
\leqslant i
⩽i的人数。
x
x
x个始作俑者中一定有一个人惩罚系数
=
y
=y
=y,且所有人的惩罚系数
⩽
y
\leqslant y
⩽y。若
c
2
[
y
]
<
x
c_2[y]<x
c2[y]<x,则合法情况数为
0
0
0。否则在
c
1
[
y
]
c_1[y]
c1[y]个人中选出一个人当作惩罚系数最大的始作俑者,然后在另外
c
2
[
y
]
−
1
c_2[y]-1
c2[y]−1个人中选出另外
x
−
1
x-1
x−1个人,方案数为
C
c
1
[
y
]
1
C
c
2
[
y
]
−
1
x
−
1
C_{c_1[y]}^1C_{c_2[y]-1}^{x-1}
Cc1[y]1Cc2[y]−1x−1。但如果有多个人的惩罚系数都为
y
y
y,这样算就会算重。于是搞一波容斥:
∑
k
=
1
c
1
[
y
]
(
−
1
)
k
−
1
C
c
1
[
y
]
k
C
c
2
[
y
]
−
k
x
−
k
\sum_{k=1}^{c_1[y]}(-1)^{k-1}C_{c_1[y]}^kC_{c_2[y]-k}^{x-k}
k=1∑c1[y](−1)k−1Cc1[y]kCc2[y]−kx−k
当这
x
x
x个始作俑者确定以后,还要讨论其余
n
−
x
n-x
n−x人的情况。每次考试参与传答案的同学都不完全相同,意味着每次考试唯一对应
n
n
n个同学的一个子集。首先这
x
x
x个始作俑者一定都出现在老师记录名单的每一次考试中,这样的考试有
2
n
−
x
2^{n-x}
2n−x次(相当于去掉这
x
x
x个始作俑者,其余
n
−
x
n-x
n−x个同学的子集数),选择的方案数为
2
2
n
−
x
2^{2^{n-x}}
22n−x。但可能有其它的同学出现在选择出来的每一次考试中,而这些同学不是始作俑者,这种选法不合法,需要减掉。于是又搞一波容斥:
∑
k
=
0
n
−
x
(
−
1
)
k
⋅
2
2
n
−
x
−
k
C
n
−
x
k
\sum_{k=0}^{n-x}(-1)^k\cdot 2^{2^{n-x-k}}C_{n-x}^k
k=0∑n−x(−1)k⋅22n−x−kCn−xk
于是答案就出来了(
x
=
0
x=0
x=0时的惩罚量为
0
0
0,直接跳过):
a
n
s
=
∑
x
=
1
n
∑
y
∈
a
i
(
∑
k
=
1
c
1
[
y
]
(
−
1
)
k
−
1
C
c
1
[
y
]
k
C
c
2
[
y
]
−
k
x
−
k
)
(
∑
k
=
0
n
−
x
(
−
1
)
k
⋅
2
2
n
−
x
−
k
C
n
−
x
k
)
x
y
ans=\sum_{x=1}^n\sum_{y\in a_i}\bigg(\sum_{k=1}^{c_1[y]}(-1)^{k-1}C_{c_1[y]}^kC_{c_2[y]-k}^{x-k}\bigg)\bigg(\sum_{k=0}^{n-x}(-1)^k\cdot 2^{2^{n-x-k}}C_{n-x}^k\bigg)xy
ans=x=1∑ny∈ai∑(k=1∑c1[y](−1)k−1Cc1[y]kCc2[y]−kx−k)(k=0∑n−x(−1)k⋅22n−x−kCn−xk)xy
虽然有三层循环,但 ∑ y ∈ a i ∑ k = 1 c 1 [ y ] \sum\limits_{y\in a_i}\sum\limits_{k=1}^{c_1[y]} y∈ai∑k=1∑c1[y]恰好把 n n n个同学全部枚举一遍, ∑ k = 0 n − x \sum\limits_{k=0}^{n-x} k=0∑n−x与 y y y无关,因此可以做到 O ( n 2 ) O(n^2) O(n2)。