诸暨海亮 2018.6.5 模拟赛 解题报告

打包

Onedrive https://1drv.ms/f/s!AqBpwavEsMkugXr25F8t6RPHDwqO

百度 链接: https://pan.baidu.com/s/13c5KRqGFnigKCN144c6G-w 密码: atuc

A

模拟。。。

https://ideone.com/bLo55T

B

把每个位置单独拿出来考虑它的贡献,注意到如果两个点被覆盖相同的次数,它们对答案的贡献是一样的。。。于是可以考虑 dp 算出每个点被覆盖若干次(不一定涂色)后为某种颜色的概率。。。

令 $ f(i, t) $ 为 一个位置被覆盖了 $ i $ 次后颜色为 $ t $ 的概率,那么如果这次被涂色它可以转移到 \(f(i + 1, t \times w)\)\(w\) 为某种颜色;如果没涂色可以转移到 $f(i + 1, t) $。

最后对于每个位置 $ i $ 算一下 \(\sum_{j = 0}^{C - 1} f(cnt(i), j) \times j\) 加起来,其中 \(cnt(i)\) 是在询问中被覆盖的次数。。。

https://ideone.com/QdeWRq

C

一个完全平方数的所有质因子出现的次数一定是个偶数对吧。。。对于每个质因子,如果它在 $ 1 $ 到 $ N $ 里面出现的次数是偶数就全部取走,是奇数的话就不取它本身,这样不会影响其他质因子的选取。。。

https://ideone.com/TPk2aR

D

求出 $ T $ 串的排名,其实就是求比它小的字符串个数。。。

对于 $ T(i) $,那些前面和 $ T $ 相同,第 $ i $ 位小于它的字符串一定都比 $ T $ 小,于是可以对于每一位都统计一下这样的字符串个数。

对 $ S $ 和 $ T $ 进行逐位比较,假设要统计进去的字符串在本位及之后与 $ S $ 能有 $ k $ 处差别(下面的 $ i $ 是 0-indexed 的):

  • 若 $ T(i) \le S(i) $,那么小于 $ T $ 且满足条件的字符串个数有

\[ 比 T(i) 小的字符个数 \times \binom{n - i - 1}{k - 1} \times 25^{k - 1} \]

  • 若 $ T(i) > S(i) $,要考虑到统计的字符串第 $ i $ 位与 $ S(i) $ 相同的情况,那么小于 $ T $ 且满足条件的字符串个数有

\[ (比 T(i) 小的字符个数 - 1) \times \binom{n - i - 1}{k - 1} \times 25^{k - 1} + \binom{n - i - 1}{k} \times 25^{k} \]

注意一下 $ k = 0 $ 的情况。。。

https://ideone.com/Qx6Zp3

E

这题要用到一个结论:假设 $ s_1, t_1 $ 与 $ s_2, t_2 $ 分别为两棵树的直径起点、终点(任意一条直径都行),那么把两棵树拼起来后,新树的直径之一的起点、终点一定是 $ s_1, s_2, t_1, t_2 $ 中的两个。。。

这题每次都只会在叶子加入节点,因此不用破坏倍增表,可以用新加入的点更新树的直径。

https://ideone.com/ZXjeD3

常识和想法

  • 类似 B 题那种的 forward-style dp (貌似叫刷表法?) 在转移状态比较麻烦的时候很好用。
  • E 题的结论,把两棵树拼起来后,在原来两棵树的直径起点、终点中选两个距离最远的,那么新树的直径起点终点就是这两个。。。暂时不会证。。。
  • 现场 E 想到个乱搞做法以为是对的,爆肝写完后随便造了个样例发现是假算法。。。以后写题还是别太上头,应该多想一会儿。。。

猜你喜欢

转载自www.cnblogs.com/arg-53/p/9146694.html
今日推荐