模拟测试74
Posted hz-rockstar
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模拟测试74相关的知识,希望对你有一定的参考价值。
T1:
将区间按左端点排序,点排序。
依次扫每一个点,将所有满足条件的区间装入堆中,弹掉所有过期的区间。
每次贪心取右端点最小的区间。
时间复杂度$O(nlogn)$。
T2:
把树放在森林中考虑。
设$dp[i][j]$表示$i$个点的森林,有$j$个点在第一棵树的概率。
然后$dp[i][j]=dp[i-1][j-1]*(j-1)*inv[i]+dp[i-1][j]*(i-j)*inv[i]$。
手模一下发现$dp[i][j]=inv[i]$,于是$dp[i][j]$就废掉了......
设$f[i][j]$表示有$i$个点的树,深度不超过$j$的概率,$g[i][j]$表示有$i$个点的森林,深度不超过$j$的概率。
然后$f[i][j]=g[i-1][j-1]$,于是$f[i][j]$也废掉了......
最后$g[i][j]=sum limits_{k=1}^i g[k-1][j-1]*g[i-k][j]*inv[i]$。
时间复杂度$O(n^3)$。
T3:
由于原图是一棵树,所以连通块个数=点数-边书。
区间点数直接就区间长度,考虑如何求区间边数。
把每一条边看成一条线段,问题转化为求区间包含的小区间数。
把每条边存放在左端点处,用主席树维护右端点,直接求区间内值域内的数个数。
时间复杂度$O(nlogn)$。
以上是关于模拟测试74的主要内容,如果未能解决你的问题,请参考以下文章
AlamofireObjectMapper.swift 第 74 行适用于 Playground,但不适用于设备或模拟器