0
0

More than 3 years have passed since last update.

全探索

Last updated at Posted at 2021-09-11

bit全探索

プログラムの書き方


for (int i = 0; i < (1 << 100); i++) {
  bitset<100> s(i);
  if (i & (1 << 2)){} // 2桁目のビットが1かどうかチェックする

}

bitsetとは

ビット集合を表わす型(クラス)のこと. N桁の2進数を定義することができると思ってくれたら良い.

プログラム 説明
a = (a ^ b) など int 型などと同じように、ビット演算(and, or, xor)をすることができます。
a.set(x) a の x 桁目(2進数)を 1 に変更します。
a.reset(x) a の x 桁目(2進数)を 0 に変更します。
a[i] 配列と同様、a の i 桁目(2進数)にアクセスすることができます。a[i] は必ず 0 か 1 です。
a.count() a の全ての桁のうち、1 となっている桁の個数を返します。

練習問題

ARC061 C - たくさんの数式 / Many Formulas
ABC079 C - Train Ticket
ABC104 C - All Green
ARC029 A - 高橋君とお肉
ABC002 D - 派閥

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0