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