することがない(AOJ 0514 Quality Checking)

こんにちは。今日から夏休みに入ったのに朝に寝て夕方に起きる生活が早速始まってしまいました。こむぎ娘です。

夏休み、1か月半くらいなんですが、(高校までに比べれば)長いけど(想像してたよりは)短いですね…

今のところ予定とかあまり入ってないし暇なので何か面白そうなイベントみたいなのがあったら声かけてくださいな
一応いろんな所に行きたいなと考えてます。西の方とか。


さて、最近AOJばっかりやってるのですが、解ける問題がもう少なくなってきた気がします。実力不足。
コンテストごとに表示してA問題、B問題に相当するものを一通り解いて回ったんですが、40solvedくらいしか増えませんでした。まだまだ先は長い…






以下、問題の内容や解法等を含みます。まだ解いてない人やこれから解く人は見ない方がいいかもしれません。







ヾ(๑╹◡╹)ノ"





AOJ 0514 Quality Checking

問題はこちら

なお、この問題を解くのに参考にした(というか知識として用いた)問題はこちら





正直、やるだけみたいな気がするけど、一応。

  • ある部品が「故障していない」と決定するためには、その部品を含めた検査結果が合格であればよい
  • ある部品が「故障している」と決定するためには、その部品以外全てが「故障していない」という条件下で不合格であればよい
  • 以上2つで定まらなければ、結果は「不定」である。

決定する条件はこれだけなので、以下の流れで解いていけばいいと思う。

  1. まず、事前操作として全ての部品を「不定」扱いとする。
  2. 結果が合格である全ての検査で、使われていた部品を「故障していない」扱いに変更する。これで「故障していない」部品が全て分かることになる。
  3. 前項の情報を用いて、結果が不合格である全ての検査で、使われていた部品の組み合わせが「故障していない」2個と「不定」1個であった場合、「不定」であったものを「故障している」扱いに変更する。もし「不定」である部品が2個以上使われていた場合は何も変更しない。
  4. それぞれの状態を出力する。


あんまり難易度は高くない問題だったけど悪くなかった。なおコードは省略する(綺麗ではないので)。

せっかく夏なので、家でAOJやるだけじゃなくて、色々なことがしたいね。でもAOJのランキングもっと上げたいなあ。うーむ。