百度之星初赛(全)

初赛一

打疫苗去了,最后\(30min\)看了看题,打了一题还有一题没调出来。

自己的思路太慢以及打代码速度太慢,别人可以\(40min\)\(5\)题啊。。。

初赛相对来说不算太难的。

\(T4,T8\)是简单的模拟题。

\(T6\)需要超级快读。感觉自己也需要背背这个板子。

\(T3\)是简单的\(DP\)

初赛二

这次是准时(迟了\(10min\))开始打的。

\(T1\)开始打的,是道简单小学数学题。

\(T2\)简单模拟,\(T7\)简单拓扑序,\(T4\)是简单数学题。

\(T3\)是超简单弱化版的欧拉回路(甚至不需要找回路)。

\(T5\)的题意和样例没看懂:

给一个排列,排列可能由两种方式生成:

  1. 初始为\(1,2,...,n\),每次等概率随机交换两位,交换\(3n\)次。
  2. 初始为\(1,2,...,n\),每次等概率随机交换两位,交换\(7n\)次。

求这个排列是由哪种方式生成。\(50000\le n\le 100000\)

结果这题题解也来了个捉摸不透的解释:

交换 \(3n\) 次之后排列的环的个数或不动点个数会远大于交换 \(7n\) 次之后排列环的个数或不动点个数,直接判断大小即可。

看了看别人的代码,就是判断不动点个数是否大于\(10/50/20/2/...\),感觉很神奇。。。


\(T6\)感觉并不难,考场有两种想法。

  1. 以每个叶子(且是直径一段)为根做一波,乘积之和。

  2. 想的是找重心然后看每个深度的个数,\(C(2,t[dep])\)的乘积,但是错了

看来是我考虑不够周全。。。

正解和我的第一个想法其实很相似了,但是有些情况会算重:

就是刚好\(S\)中的点是一条直径的情况,这样直径两端都可以算到这种情况,需要特别减去这种情况即可。

而减去这个极其容易,只需要在\(dfs\)的时候顺便记录一下\(mxdep\)的个数,最后的\(ans\)减去\(sum/2\)即可。

初赛三

咕咕咕了。