2021清北学堂国庆刷题班Day4
比赛总结
T1
看到组合数有关的计数,很容易想到和杨辉三角有关。所以这个问题就可以转化为 $ x $ 在杨辉三角里出现了多少次。
一种暴力的思路是暴力递推算杨辉三角,然后统计数的个数。由于组合数增长很快,所以到大约 $ 2000 $ 行左右的时候,除了第一个数和最后一个数其他数基本都在 $ 1e9 $ 以上,对答案没有影响。
所以考虑预处理杨辉三角到 $ 2000 $ 行,之后每个数出现的次数基本都为 $ 2 $, 以此求解即可。
补充:组合数的性质。
1、互补性质
即从 $ n $ 个不同元素中取出 $ m $ 个元素的组合数 $ = $ 从 $ n $ 个不同元素中取出 $ (n - m) $ 个元素的组合数。
即:$ C_n^m = C_n^{n - m} $
2、组合恒等式
若表示在 $ n $ 个物品中选取 $ m $ 个物品,则如存在下述公式:$ C_n^m = C_n^{n - m} = C_{n - 1}^{m - 1} + C_{n - 1}^{m} $ 。
T2
$ 40 pts $
由于 $ n \leq 20 $ , $ 2 ^ {20} $ 大小可以接受, 则可以考虑直接 $ floyd $ 暴力求解任意两点之间的最短路,暴力计算结果即可。
$ 100 pts $
观察性质可以发现,一张图的最短路树即为其最小生成树。
那么显然可以考虑先求出一张图的最小生成树,然后在最小生成树上求解。
考虑在最小生成树上如何求出任意两点间最短路的长度和。考虑每一颗子树的根, 从该点到该点上面那个点之间的路径被经过的次数即为子树内节点的个数于子树外节点个数的乘积。
T3
官方做法(DP):
$ f[i][j] $ 表示 $ 1 \sim i $ 被杀, $ i + 1 $ 只没有被杀, $ j $ 次随机。
$ g[i] $ 表示 $ i $ 存活并且 $ i $ 是存活中编号最小的皮克敏的方案数。
$ h[i] $ 表示 $ i $ 存活并且 $ i $ 是存活的编号最小的且编号大于 $ i $ 皮克敏的存活的方案数。
第 $ i $ 只皮克敏存活的方案数:
其他做法(Minus):
$ f[i][j] $ 场上还剩 $ i $ 个,这些皮克敏中第 $ j $ 个活到最后的概率。
目标 $ f[n][i] \times i $ 。
1.先杀一个编号最小的: 当且仅当 $ (n - i) $ $ mod $ $ (k + 1) = 0 $。
此时 $ f[i][1] = 0 $, 否则 $ f[i][j] = f[i - 1][j - 1] $ 。
2.随机 $ k $ 次杀一个:
边界 $ f[r][i] = 1 $ , 其中 $ r = n $ $ mod $ $ (n + 1) $ 。
T4
记 $ s[i] = \sum_{i = 1}^{n} {a_i}$ , 则一只皮克敏做完前 $ i $ 道工序 $ s_i \times b_1 - s_{i - 1} \times b_2 ... $
把 $ \frac {x}{y} $ 看作 $ x $ , $ s_i $ 看作 $ k $, $ s_{i - 1} $ 看作 $ b $ , 则可以化简出类似于 $ y = kx + b $ 的直线形式。
转化为谁和 $ y $ 轴交点坐标值最大。
可以看作, 平面上有若干个点, 每个点都有一条过该点的直线, 求和 $ y $ 轴截距最大的。
考虑凸包,由于数据随机,凸包上最多 $ 20 \sim 30 $ 个点, 直接暴力求凸包上的点求解即可。
也可以贪心求解,由于所有数为正, 则斜率为正, 按 $ y $ 与 $ x $ 从大到小排序, 选前 $ 100 $ 个点暴力,数据随机情况下可以获得较高的分数。

浙公网安备 33010602011771号