模拟赛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
正解是二分角度 然后对于每个时间 都处理出合法区间 看是否有交