Official

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: