AGC051 B - Bowling
解法
まず、という置き方を考えます。すると、下の図のように、対角線上に点が10個並びます。この時、A, C, Dは同じ個数だけ見えて、Bだけ1個しか見えません。よって、この置き方を1つのブロックとして大きな1個の点とみなすと、このブロックを用いて、A, CがDの1/10以下になるような配置を考えればよいことになります。
なので、これ以降Bのことを気にする必要が(ほぼ)なくなります。
上記のブロックをたくさん置いたときに、Dから見える個数がAとBの10倍になるようにしたいです。
一番簡単そうなのは、x座標とy座標を10個ずつ決め打ち、100個の点をプロットしたとき、が全て異なるようにする、というものです。
これは、xが1の位、yが10の位、となるようにしてxは、yはを選べばよいです。
あとは、先ほどのブロックの大きさがなので、和が重複しないように選ぶx座標とy座標の微調整を行えば、1000個の点をプロットしたときにA~Cが100、Dのみ1000、という状態を作ることができます。
具体的には、xは、yはとすれば問題ありません。
感想
難しかったです…でも解けた時はなるほど、となりました。面白かったです。
斜めにできるだけ置かないとBがかなり強かったのですが、そうするとACが半分にしかならない、という状態が多発していました。今回のコンテストはかなり冷静でいられたと思ったのですが、それでも時間がかかっているので悔しいです。