D - 数列 XOR
https://atcoder.jp/contests/bitflyer2018-final-open/tasks/bitflyer2018_final_d
解説ACです。うーん難しい
問題:n個の整数列Aに操作を好きなだけしてBと一致させたい。可能か。
操作:隣り合う2つの片方に、もう一方をXORする
解説:
ある2要素を入れ替える。
足すことができる。
この2つのことから整数列をbitごとの行列にしてRankを求めて一致するか確かめればよい。
掃き出し法:
n個の要素について、1があるところを軸にする。(一番上のbitにしたけどどこでもよさそう)
同じbitに1があるほかの要素すべてにXORする(引く操作)
最後にソートすると整う。
足す操作でいいのかーと思いました。
結構非自明な感じがします。
bitごとの行列に帰着は典型っぽく見えますけど、類題とかあるんですかね。
なれるの厳しそうですね。