神人诈骗题。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
假设第 iii 个巫师面向的方向为 Bi(Bi∈{0,1})B_i(B_i\in\{0,1\})Bi (Bi ∈{0,1}),则根据题意可以列出如下方程:
{B2+B3+...+Bn=A1(1−B1)+B3+B4+...+Bn=A2(1−B1)+(1−B2)+B4+B5+...+Bn=A3⋮\begin{equation*} \begin{cases} B_2+B_3+...+B_n=A_1\\ (1-B_1)+B_3+B_4+...+B_n=A_2\\ (1-B_1)+(1-B_2)+B_4+B_5+...+B_n=A_3\\ \vdots \end{cases} \end{equation*} ⎩⎨⎧ B2 +B3 +...+Bn =A1 (1−B1 )+B3 +B4 +...+Bn =A2 (1−B1 )+(1−B2 )+B4 +B5
+...+Bn =A3 ⋮
情况数就是解的数量。
注意到解的数量不超过 222,所以那个对 676767677676767677676767677 取模毛用没有。
注意到当 A1=A2=A3=...=An=n+12A_1=A_2=A_3=...=A_n=\frac{n+1}{2}A1 =A2 =A3 =...=An =2n+1 时,方程有两个解,其余时候最多只有一个解。
我们可以特判掉两个解的情况。
然后考虑如何解这个方程。
注意到 111 式与 222 式差别就在于 B2B_2B2 与 (1−B1)(1-B_1)(1−B1 ),然后因为 BiB_iBi 的范围可得出 A1,A2A_1,A_2A1 ,A2 的差的绝对值应不超过 111,而且 A1,A2A_1,A_2A1 ,A2 相等时,B2=1−B1B_2=1-B_1B2 =1−B1 ,否则 B2=B1B_2=B_1B2 =B1 。
同理,也可以推出 BiB_iBi 与 Bi−1B_{i-1}Bi−1 的关系。
然后注意了,需要验证这些解成不成立!
我们分别假设 B1=0,1B_1=0,1B1 =0,1,判断等式成不成立即可。如果其中一个成立,则说明有一个解,否则说明没有解。
时间复杂度:O(∑n)O(\sum n)O(∑n)。