AIで解説 AtCoder攻略 XOR構成

読了 約4分 たびすけ
AIで解説 AtCoder攻略 XOR構成

XOR構成ページの位置づけ

項目内容
必修度発展
学習目安発展
前提XOR・構成
対象問題3問(推定値あり3問、未算出0問)

この記事のdifficulty区分は、問題を解く順番を決めるための目安です。AtCoderの公式なA〜F区分ではなく、取得できたdifficulty推定値を次の範囲に分けています。

学習目安difficulty推定値問題数
入門difficulty < 01
標準0〜7991
標準〜発展800〜11990
発展1200以上1
未算出0

XORの性質から、条件を満たす数列を出力する形を直接組み立てます。存在しない境界を先に切り分けるのが要点です。

問題ごとの細かな実装は異なりますが、最初に確認する条件は共通しています。

XOR構成の見分け方

  • XORの値が全体の条件を決める
  • 値の集合を反転・除外して並べられる
  • 出力列そのものが答えになる

XOR構成の実装前チェック

  • 小さいMを全列挙して存在条件を確認する
  • 特殊ケースを一般式から分ける
  • 出力長と重複の有無を確認する

先に確認する文法・ライブラリ

まずは必須Python文法で、入力・配列・条件分岐・ループなどの基本を確認してください。問題に合わせたキュー、ヒープ、二分探索などの選び方は標準ライブラリ・定石にまとめています。

代表問題で実装を確認する

最初の一問として、ABC213 A Bitwise Exclusive Or公式解説)を解きます。XORは同じ値を2回適用すると元に戻るため、A XOR B XOR B = Aです。AとBのXORを取れば、A XOR X = BとなるXを求められます。

A, B = map(int, input().split())
print(A ^ B)

ビット数をWとするとO(W)時間・O(1)メモリです。

XOR構成の学ぶ順番

このページでは全件を一度に並べず、difficultyの推定値を目安に代表問題を段階分けしています。難易度が未算出の問題は、制約と出題意図を先に確認します。

まず解く

問題公式解説出題意図difficulty
ABC213 A Bitwise Exclusive Or公式解説A xor C=Bを満たすCはA xor BであるというXORの自己逆性を使う。-600
ABC171 E Red Scarf公式解説全要素のXORを求め、各要素を除いたXORは全体XORと自身のXORで復元できる性質を使う。778
ABC126 F XOR Matching公式解説XOR条件を満たす列を、除外する値と反転列の構造から直接構成する。1770

問題文を読んだら、まず「見分け方」のどれに当たるかを一行で記録します。当てはまらない問題は、別のページへ移す判断自体を復習材料にします。

XOR構成の次に読むページ

必須Python文法標準ライブラリ・定石