跨年比赛记录(CF1777 赛时+补题)

赛时

开赛前,跟某位朋友说窝可能不会 A,结果就真犯了离谱错误,一会儿没写输入一会儿写错输出,竟然 9min 才过 A😅!你看这个 0922 就是菜啦!

这个 B 很结论,瞪一眼就秒了,赛时写了 6min 就过了 B,这说明这个 B 比 A 还要水!😰

C 是个很套路的简单贪心 + 模拟,写了一会儿就过了,中间犯了离谱错误,花了不少时间。

看 D,不会了,想了一会儿没想出来呐。

看 E,还是找不到思路。

于是就去看烟花了。

赛后补题

比赛结束后看 QQ 裙,裙佬犀利地指出了 D 的结论,哈,一下子就明白了啦,妙!于是决定对这思维的火花做一点小小的记录。

D

首先观察叶子结点,发现每个叶子结点在第一时刻为 \(1\) 的概率是 \(\frac12\)

继续考虑高度为 \(2\) 的点(儿子只有叶子结点的点),发现其在第一时刻为 \(1\) 的概率为 \(\frac12\),第二时刻为 \(1\) 的概率取决于其每个孩子在第一时刻的取值,而每个孩子在第一时刻取值为 \(0\) 或取值为 \(1\) 的概率皆为 \(\frac12\),由于异或运算中每个元素的变化都会对结果造成影响,于是该结点在第二时刻取值为 \(1\) 的概率仍为 \(\frac12\)

以此类推,可以发现在某一时刻(与结点高度有关)后某一结点的取值均为 \(0\),而在这一时刻前,该结点在每一时刻取值为 \(0\)\(1\) 的概率皆为 \(\frac12\)

E

E 也是一道巧妙的题目,由题面不难想到二分答案,巧妙之处在于判定。

判定时,我们无法确定每一条可以转向的边是否需要转向,这里有一个巧妙的 trick,我们可以把需要转向的边定为双向边。

我们来简要说明一下这个 trick 的正确性,我们只需要说明在转换为双向边的图中,若存在一个可到达所有点的点 \(s\),那么从这个点到图中的任何一个点所经过的路径中,可以只从一个方向经过这条双向边。

假设这条双向边为 \((u, v)\),那么从 \(s\)\(u\)\(s\)\(v\) 的路径中至多有一条必须经过 \((u, v)\),于是只需单向通过该边便可到达点 \(u\)\(v\),下略。

那么判定只需在建出的新图上跑 \(Tarjan\) 缩点,后判定是否只有一个入度为 \(0\) 的点即可(考虑反向图,可发现从每个点出发最终都会到达一个出度为 \(0\) 的点,那么原图中若有唯一入度为 \(0\) 的点,可以到达其它所有点)。

F

观察式子,看到前面的 \(\max\) 可以发现要求出每个 \(a_i\) 的支配区间,后面的连续段的 \(\operatorname{xor}\) 和可以用类似于前缀和的方法计算,实际上就是在笛卡尔树上跑一个字典树的启发式合并,复杂度分析类似于 dsu on tree,是一个 \(\mathcal{O}(n\log n\log a)\) 的。

这题代码犯了离谱错误调了几小时,真是无可救药呢😥

posted @ 2023-01-23 00:13  wiki0922  阅读(24)  评论(0编辑  收藏  举报