码迷,mamicode.com
首页 > 其他好文 > 详细

Day 8.26

时间:2017-08-26 19:46:51      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:判断   答案   最大值   最大   循环   排序   前缀   小数   rac   

第一次用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

组合数学,好像还要用容斥原理,不是太懂

Day 8.26

标签:判断   答案   最大值   最大   循环   排序   前缀   小数   rac   

原文地址:http://www.cnblogs.com/algonote/p/7436010.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!