CF341E Candies Game 题解

· · 题解

:::::info[题目基本信息] 考察:构造(3000)。
题目简介:
给定非正整数序列 \{a_n\},有操作:

要求一系列操作完成后序列中恰好有两个数非 0,要求构造一组操作,操作数不得超过 10^6,无解给出 -1
数据范围:

这时我们就能把 a_y 清空成 0,且由于 a_z 的减少量小于 a_y 的减少量,故 a_z 不会被清零,这样我们就将一个数清为 0 了。
但是在 a_x\nmid a_y 时又该如何呢?
p=a_y\bmod a_x,最终 a_y\leftarrow p,这时将 a_x,a_y,a_z 重新排序 a_y 一定会被被排序到 a_x 的位置上,成为 a'_x,这时 a'_x=p<a_x,那么这样下去早晚会产生 0
这样我们就有了一种构造方案,现在我们来观察一下复杂度。
容易发现,令 a_x\leftarrow a_y\bmod a_x 的一轮操作构造复杂度为 \Theta(\log V) 次。同时由于有结论(下文钦定 a\ge b):

a\bmod b<\frac{a}{2}

:::::success[证明] 当 b>\dfrac{a}{2} 时,a\bmod b=a-b<a-\dfrac{a}{2}=\dfrac{a}{2}
b\le\dfrac{a}{2} 时,a\bmod b<b\le\dfrac{a}{2}
::::: 这样轮数大概是在 \Theta(\log V) 量级的,但是这个东西和辗转相除法等价在哪????故本人目前不会严谨的证明。
这样构造复杂度大约是在 \Theta(n\log^2 V) 的,反正能过。
时间复杂度为 \Theta(n\log^2 V),空间复杂度为 \Theta(n)

code