模拟赛x+1

A:接力比赛

跑两遍背包就可以了




B:树上竞技

对于点考虑很麻烦 所以考虑边的贡献

假定边一侧有S个点 另一侧有n-S个点

假定S>=n-S

那么最终集合点一定在n-S这边 此时这条边的贡献即为S

所以可以列出式子

\(\sum\limits_{i=1}^{m-1} \binom{S}{i} \binom{n-S}{m-i} * min(i,m-i)\)

含有min 不容易计算 所以把式子拆开

\(\sum\limits_{i=1}^{\frac{m-1}{2}} \binom{S}{i} \binom{n-S}{m-i} * i + \sum\limits_{i=1}^{\frac{m-1}{2}} \binom{S}{m-i} \binom{n-S}{i} * i + [m\)%\(2=0] * \binom{S}{\frac{m}{2}} * \binom{n-S}{\frac{m}{2}} * \frac{m}{2}\)

后面的东西显然特判掉可以直接处理

考虑前面的东西怎么计算

首先前面的东西可以化成\(S*\sum\limits_{i=1}^{\frac{m-1}{2}} \binom{S-1}{i-1} \binom{n-S}{m-i}\)

\(G(S) = \sum\limits_{i=1}^{\frac{m-1}{2}} \binom{S-1}{i-1} \binom{n-S}{m-i}\)

不妨用常量k代替\(\frac{m}{2}\)

\(G(S) = \sum\limits_{i=1}^{k} \binom{S-1}{i-1} \binom{n-S}{m-i}\)

考虑能否由\(G(i)\)快速转移到\(G(i+1)\)

考虑\(G(i)\)的数学意义 表示在一共n-1个数中 选择m-1个数 其中前S-1个中最多选k个

\(G(i)\)\(G(i+1)\)转移 其中所不同的部分只有i这一个位置 在\(G(i)\)中 前i-1个选择k-1个 然后选中i 是合法的

但是在\(G(i+1)\)中 则不存在这样的情况

所以直接减去这样的情况就可以了 O(n) 递推把所有G预处理出来 然后一遍dfs就可以了





C:虚构推理

枚举时刻 二分最大的角度的位置 然后取max

这里的时刻要枚举到0.1s

正解是二分角度 然后对于每个时间 都处理出合法区间 看是否有交




D:记忆碎片

posted @ 2020-12-16 16:42  HISKrrr  阅读(117)  评论(0编辑  收藏  举报