初赛一
打疫苗去了,最后(30min)看了看题,打了一题还有一题没调出来。
自己的思路太慢以及打代码速度太慢,别人可以(40min)切(5)题啊。。。
初赛相对来说不算太难的。
(T4,T8)是简单的模拟题。
(T6)需要超级快读。感觉自己也需要背背这个板子。
(T3)是简单的(DP)。
初赛二
这次是准时(迟了(10min))开始打的。
从(T1)开始打的,是道简单小学数学题。
(T2)简单模拟,(T7)简单拓扑序,(T4)是简单数学题。
(T3)是超简单弱化版的欧拉回路(甚至不需要找回路)。
(T5)的题意和样例没看懂:
给一个排列,排列可能由两种方式生成:
- 初始为(1,2,...,n),每次等概率随机交换两位,交换(3n)次。
- 初始为(1,2,...,n),每次等概率随机交换两位,交换(7n)次。
求这个排列是由哪种方式生成。(50000le nle 100000)
结果这题题解也来了个捉摸不透的解释:
交换 (3n) 次之后排列的环的个数或不动点个数会远大于交换 (7n) 次之后排列环的个数或不动点个数,直接判断大小即可。
看了看别人的代码,就是判断不动点个数是否大于(10/50/20/2/...),感觉很神奇。。。
(T6)感觉并不难,考场有两种想法。
-
以每个叶子(且是直径一段)为根做一波,乘积之和。
-
想的是找重心然后看每个深度的个数,(C(2,t[dep]))的乘积,但是错了。
看来是我考虑不够周全。。。
正解和我的第一个想法其实很相似了,但是有些情况会算重:
就是刚好(S)中的点是一条直径的情况,这样直径两端都可以算到这种情况,需要特别减去这种情况即可。
而减去这个极其容易,只需要在(dfs)的时候顺便记录一下(mxdep)的个数,最后的(ans)减去(sum/2)即可。
初赛三
咕咕咕了。