第一次用LaTeX
T1
判断两节点间的父子关系
这道题恰好是我以前给自己出的题,没想到这次居然真的碰上了
大部分人都用LCA来做,但是我有更好的方法$O(n)$
DFS的时候标记每个节点的DFS序$dfn[i]$,再标记该节点的子树中所有点DFS序的最大值$sub[i]$
如果$dfn[y]<dfn[x]\leq sub[y]$,那么说明x一定在y的子树中
T2
A,B两组各有n个人,他们的实力值分别为$a_i$、$b_j$,两组之间随机比赛,求a组得分减b组得分的数学期望,保留一位小数
表达式大概长这个样子:
$$\frac{\sum_{i=1}^{n}\sum_{j=1}^{n}(a_i-b_j)^2}{n}$$
只观察分子,变形得到
$$\sum_{i=1}^{n}\sum_{j=1}^{n}(a_i^2-2a_ib_j+b_j^2)$$
当$a_i<b_j$的时候应改为$-(a_i^2-2a_ib_j+b_j^2)$
注意公式里面的$a_i$,$b_j$能被提出来,所以里面的循环可以直接预处理
把B中的n个人按$b_i$排序,然后按$b_i$维护$b_i$和$b_i^2$的前缀和
遍历A中元素时只需要把和小于$a_i$的人比赛的部分取正(用前缀和求),大于$a_i$的人比赛的部分取负(用总和减前缀和),把结果求和再除以n就行了
最后记得答案要*10放在long long里,再在/10和%10的部分中间添上小数点
而我把答案*100之后从long long转换到了double里再/100,本来以为能在保证精度的条件下偷个懒,结果没想到答案在double里根本存不下,丢了50分
T3
组合数学,好像还要用容斥原理,不是太懂
时间: 2024-10-24 11:40:43