T1:浮躁 (fickle)
阿杰在上班会数学课:“最近有些同学很浮躁……”
早已习惯的你,在想这样一个问题:
共有$ n$ 种竞赛,对于其中任意 i 种竞赛
(
1
≤
i
≤
n
)
(1≤i≤n)
(1≤i≤n),有
a
i
ai
ai 个人同时参加,问有多少个人参加了至少一门竞赛?
阿杰还在滔滔不绝,你却陷入了深思。
第一眼看上去,嗯,简单题,乱搞就好
等一下,没有取模
发现高精会TLE,然后就不会了
正解:因为
a
[
i
]
∗
n
<
=
1
e
9
a[i]*n<=1e9
a[i]∗n<=1e9,那么就去一个大于
1
e
9
1e9
1e9的模数就好了
T2:想象一下 (imagine)
我们高大的老班举起了有半个他那么高的三角板,说:“你们想象一下——”
于是你就陷入了想象……
有一棵 n 个点的树,每个叶子节点上都有一个人,他们按照每秒钟走一条边的速度向树根(节点 1)前进。
你可以运用 k 次想象之力,让某一个节点(除了根节点)上的所有人瞬间(耗时为 0)转移到这个节点的父亲上。
你想知道最少需要多少时间,所有人可以到达根节点。
通过观察可以发现,如果在一个叶子节点转移,那么一定没有在父亲节点转移来得优
又发现,如果一棵树有
m
m
m条边,那么就可以使用
m
m
m次转移让所有的点都到达根节点
那么我们可以让所有的转移都在尽量靠近根节点的地方,那么一定是最优的
然后用类似于拓扑的方法模拟叶子节点的上跳,同时将它删除,当剩余的边数<=k时,上跳的次数就是答案
T3:超简单 (super)
有一个 n 面的骰子,第 i 面的数是 vi,朝上的概率是 pi。
教室的最后一排有一个人,不停地抛这个骰子,直到某一面朝上了两次,就停止抛骰子,但他不知道所有朝上的面的数字的和的期望 E 是多少。
老班一脸嘲讽:“这不是超简单嘛。”
事实证明,是真的TM”超简单“
a
n
s
=
∑
i
=
1
n
∣
s
∣
!
∑
(
p
i
∗
P
s
∗
(
v
i
+
V
s
)
)
ans=\sum_{i=1}^{n}|s|!\sum (pi*Ps*(vi+Vs))
ans=∑i=1n∣s∣!∑(pi∗Ps∗(vi+Vs))
1,⋯,n的一个含 i 的子集 s
其中Ps为s中所有元素的积,Vs为s中所有元素的和。
f
(
i
,
j
,
k
)
f(i,j,k)
f(i,j,k) 表示前
i
i
i面,
∣
s
∣
=
j
|s|=j
∣s∣=j,最后一次朝上的面是
k
k
k(
k
k
k不一定在前
i
i
i面内)的情况下,上述的第二重和式的值为多少。
转移会发现缺少一个
P
s
Ps
Ps的和,设其为
g
(
i
,
j
,
k
)
g(i,j,k)
g(i,j,k)
f
[
i
]
[
j
]
=
f
[
i
−
1
]
[
j
]
f[i][j]=f[i-1][j]
f[i][j]=f[i−1][j]
g
[
i
]
[
j
]
=
g
[
i
−
1
]
[
j
]
g[i][j]=g[i-1][j]
g[i][j]=g[i−1][j]
当
i
!
=
k
i!=k
i!=k
f
[
i
]
[
j
]
+
=
j
∗
f
[
i
−
1
]
[
j
−
1
]
∗
p
[
i
]
+
g
[
i
−
1
]
[
j
−
1
]
∗
p
[
i
]
∗
v
[
i
]
f[i][j]+=j*f[i-1][j-1]*p[i]+g[i-1][j-1]*p[i]*v[i]
f[i][j]+=j∗f[i−1][j−1]∗p[i]+g[i−1][j−1]∗p[i]∗v[i]
g
[
i
]
[
j
]
+
=
j
∗
g
[
i
−
1
]
[
j
−
1
]
∗
p
[
i
]
g[i][j]+=j*g[i-1][j-1]*p[i]
g[i][j]+=j∗g[i−1][j−1]∗p[i]
答案就是
(
j
+
1
)
∗
(
p
[
k
]
2
∗
f
[
n
]
[
j
]
+
2
∗
p
[
k
]
2
∗
v
[
k
]
∗
g
[
n
]
[
j
]
)
(j+1)*(p[k]^2*f[n][j]+2*p[k]^2*v[k]*g[n][j])
(j+1)∗(p[k]2∗f[n][j]+2∗p[k]2∗v[k]∗g[n][j]),求和即可