Judge System Update Test Contest 202004 備忘録

Judge System Update Test Contest 202004 の備忘録です。

問題はこちら↓

今回はABC3完でした。

・A問題:Walking Takahashi

数直線上の座標 S,L,R が与えられるので L<X<R となるXを求める。
L≦S≦R ならば S、S<L ならば L、R<S ならば R を出力する。

回答例(Python)
https://atcoder.jp/contests/judge-update-202004/submissions/11591606

・B問題:Picking Balls

赤と青のボールが N 個あり、ボールにはそれぞれ整数が書かれている。
赤いボールの内数字の小さいボールから取り出していき、赤いボールがなくなったら同様に青いボールを取り出す。
この時取り出したボールに書かれていた整数を順番に出力する。
赤いボールと青いボールそれぞれに配列を用意し、入力 C が 'R' なら赤の配列に、 'B' なら青の配列に X を入れる。
配列をソートして赤の配列から小さい順に出力し、赤が全て終わったら同様に青の配列から出力する。

解答例(Python)
https://atcoder.jp/contests/judge-update-202004/submissions/11592229

・C問題:Numbering Blocks

積み木が3列並んでおり、それぞれ a1≧a2≧a3 個積まれている。
全ての積み木に 1~N(a1+a2+a3)の整数を1つずつ書き込む。
次の条件を満たす書き方の個数を求める。

・左からi個目の山の下からj個目の積み木に書かれた整数をX[i][j](1≦i≦3,1≦j≦ai)とした時、

   ・X[I][j] > X[I][j-1](1≦I≦3,1<j≦ai)
   ・X[I][j] > X[I][j-1](1≦I≦3,1<j≦ai)

上記の条件から、i=0 & j=0 の時必ず1になる。
解法としてはDFSなどがあるが、自分は実装しきれなかったので3x3の配列でゼンパターン列挙して試した。制約は非常に緩いので計算量は全く問題ない。
配列の初期値は、制約から最大でも9までの整数しか書かれないので10で十分。
全列挙するにあたって、 itertools permutations を使用した。
これは第1引数にイテレータを渡すとその順列を全列挙してくれるので、それを3x3の配列に入れていき、条件を満たしたパターンを数える。

解答例(Python)
https://atcoder.jp/contests/judge-update-202004/submissions/11593534

この記事が気に入ったらサポートをしてみませんか?