Codeforces Round #740 (Div. 1, based on VK Cup 2021 - Final (Engine)) 题解

Codeforces Round #740 (Div. 1, based on VK Cup 2021 - Final (Engine)) 题解

A

枚举

B

利用调和级数+前缀和优化。

C

每次将最大的两个丢到最后即可。

D

利用平衡树得到最后的序列,相邻两位之间是\(<\)\(\leq\) 。 用组合数求解。

E

考虑二分答案。

可以从原点开始\(bfs\)。一个很重要的观察是,如果\(x\)能到\(y\),且\(t\)能到\(y\)\(x\)能到\(t\)或者\(t\)能到\(x\)

这样遍历的点是互相不同的。

F

枚举一个数\(x\)。将\(\geq x\)的看作\(1\),其余的看作\(0\)

求最少的操作次数使得序列变成\(000...0011..111\)

考虑一段区间\(1111\)的移动。令\(t_i\)表示\(i\)的出发时间。为了避免两段\(1\)相撞的情况,可以理解成等到不可能撞到前面一段时才开始。

可以将\(1\)看作\(1\)\(0\)看作\(-1\),求一边最大前缀和即可,即最左边出发的时间。

posted @ 2021-08-31 22:41  WWW~~~  阅读(50)  评论(0编辑  收藏  举报