Official
B - Swap If Equal Sum Editorial
by
B - Swap If Equal Sum Editorial
by
vwxyz
操作によって数列の総和は不変なので、\(\sum_{i=1}^{N}{A_i}\) と \(\sum_{i=1}^{N}{B_i}\) の総和が異なるなら答えは \(\text{No}\) です。 \(A=B\) なら答えは明らかに \(\text{Yes}\) です。 そうでない場合を考えます。 \(\sum_{i=1}^{N}{A_i}\) が \(2\) 以上のとき、
- \(\{1,0\}\) とそれよりも右の位置にある \(\{1\}\) を入れ替える
- \(\{0,1\}\) とそれよりも右の位置にある \(\{1\}\) を入れ替える
という操作を繰り返すことで \(\{1,1,\dots,1,0,0,\dots,0\}\) の形にすることができます。\(A\) に対してこの操作を行った後、\(B\) に対して処理を行ったときの操作列を逆順に行うことで \(A\) を \(B\) に一致させることができます。 \(\sum_{i=1}^{N}{A_i}=1\) のとき、\(A_1\) か \(A_N\) が \(1\) である場合は有効な操作を行うことができないため答えは \(\text{No}\) です。同様に、\(B_1\) か \(B_N\) が \(1\) である場合も答えは \(\text{No}\) です。そうでない場合は \(\{0\}\) と \(\{0,0\}\) を入れ替える操作が可能なので、\(A\) を \(B\) に一致させることができます。
posted:
last update: