Toy と帽子と ADP BE

主にプログラミングに関わる話をゆるくエモくやっていきます

AtCoder Grand Contest 056

1完1WA。34:19(+5:00)。

各問題

A - Three Cells per Row and Column

Nが3の倍数のときは簡単で、3つずつくっつけたものを行ごとにずらしていけばよいです。

N=9
###......
...###...
......###
###......
...###...
......###
###......
...###...
......###

N%3=0のときはこれでよいため、以下N%3>0であるとして考えます。

Nが3で割り切れないときは同じことをしてもうまくいきませんが、とりあえず右にはみ出た分は左端に置くことにして同じようにやってみると以下のようになります。

N=10
###.......
...###....
......###.
##.......# <- はみ出た
..###.....
.....###..
#.......## <- はみ出た
.###......
....###...
.......###

都合3周するため、Nがいくつであってもはみ出る部分は2箇所発生します。つまりこの状態で連結成分はN+2あることになります。よって、連結成分を2つ減らす必要があり、これは2つマージさせるのと同義です。

ここで、行をスワップさせても各行に3、各列に3の黒マスという条件は崩れませんのでその操作は自由にできます。というわけで図をぐっと睨むと

N=10
###....... <- ここと
...###....
......###.
##.......# <- ここがくっつきそう
..###.....
.....###..
#.......## <- ここと
.###......
....###...
.......### <- ここもくっつきそう

ということがわかり

N=10
###....... <- ここと
...###....
......###. <- ここを入れ替えればよさそう
##.......#
..###.....
.....###..
#.......##
.###...... <- ここと
....###...
.......### <- ここも入れ替えればよさそう

なので、最終的に

N=10
......###.
...###....
###....... <- 左側がくっついた
##.......#
..###.....
.....###..
#.......##
.......### <- 右側がくっついた
....###...
.###......

これで、無事連結成分が2つ減り、題意を満たすことができました。

(あとで公式解説見たらmaroonさんの想定解と全く一緒だった。なんか嬉しい。)

B - Range Argmax

Aが無事通ったので、配点が同じBかCかというところですが、Bは取っ掛かりもつかめないし順位表をみると明らかにCの方が難易度が低そうなので、こちらはパスで。

C - 01 Balanced

まあBをパスしたところで、こちらも900点問題なのでさっぱりわからず・・・。

まとめ

なんか、これで青パフォ上位もらうのもなんだかなぁという気がしないでもないですが、もらえるものはもらっておきましょう。ところで青パフォ、ほぼ半年ぶりだったようです。

f:id:mdstoy:20211205002205p:plain