神仙构造
卡了我很久了
思路
先考虑只有两个柱子(和一个空柱)以及两种球,我们有一下方法(据说写那篇题解的人考场上是瞪样例瞪出来的方法):
统计 $i$ 柱的 $1$ 号颜色个数,记为 $ct$
把 $j$ 柱的 $ct$ 个球移给 $n + 1$ (空柱)
依次考虑 $i$ 柱所有的球:若为 $1$ 则移给 $j$ 柱;否则移给 $n + 1$ 柱
完成该步后, $i$ 柱上无球,另两个柱满
把原来属于 $i$ 柱的球再移回 $i$ ,完成后 $i$ 柱上的球 $0/1$ 分开了(我们让 $1$ 在下面)
把 $j$ 柱的所有球移给 $n + 1$ ,完成后 $j$ 柱清空
把 $i$ 柱上层的 $0$ 移给 $j$
依次考虑 $n + 1$ 柱所有的球:若为 $1$ 则且 $i$ 柱未满则移给 $i$ 柱;否则移给 $j$ 柱
完成该步后, $n + 1$ 柱上无球,另两个柱满,且 $i$ 柱上只有 $1$
不难发现,上面的操作移动次数为 $ct + m + m + m - ct + m - ct + m = 5m - ct < 5m$
这是对于两个柱子两种球,我们直接上分治,对于 $mid$ ,我们让 $[l, mid]$ 的柱子上球颜色为 $[l, mid]$ , $[mid + 1, r]$ 柱子上颜色为 $[mid + 1, r]$ ,更具体的,我们直接枚举 $i \in [l, mid], j \in [mid + 1, r]$ ,把 $<mid$ 的颜色当成 $1$ , $> mid$ 的颜色当成 $0$ ,每次完成 $i, j$ 中的一根柱子即可
用主定理可得,操作次数:
$$
\begin{aligned}
T(n) &= 2T(\frac{n}{2}) + 5mn \\
T(n) &= 5mn \log n
\end{aligned}
$$
而时间为:
$$
\begin{aligned}
T(n) &= 2T(\frac{n}{2}) + 5mn + n^2 + nm\\
T(n) &= nm
\end{aligned}
$$
(应该吧?
代码
1 |
|