Codeforces Round 469

スポンサーリンク

A. Zebras

貪欲に前から決めます.$1$ を入れるときは意味のある選択肢はありません.$0$ が来たときには,現在 $1$ が末尾にある列の最後に置くか,新たに $0$ だけからなる列を作るかの選択肢がありますが,両方を選べる場合に後者を選ぶ利点はありません.

B. A Leapfrog in the Array

再帰的に計算できます.

C. Data Center Maintenance

$x$ を選ぶならば $y$ も選ばなければならないという関係で有向グラフを作ります.入次数が最小であるような強連結成分が答になります.

D. Curfew

$x_1,x_2$ について独立に最適化します.これらの最適解であって,初期状態における左半分・右半分の人を使うものがあるはずなので,独立に最適化すれば大丈夫です.

E. Binary Cards

同じ $+2^k$ はひとつまでとしてよいです.$(+1,+1)$ より $(+1,+2)$ が上位互換になるからです.$+2^k, -2^k$ も両立しないとしてよいです.$(+1,-1)$ より $(+1,-2)$ が上位互換になるからです.

負の $2$ べきで使うものを固定します.ある値を作るには,負の $2$ べきをすべて使った状態からの差分を考えて,「負の $2$ べきを使わなかったことにする」「正の $2$ べきを使う」をすると考えます.すると,差分として作るべき値の bit として登場するものすべてを正または負の $2$ べきとして採用しているというのが条件になります.

F. Astronomy

AC はしましたが何も分からない.

解説は $O(n^2)$ を主張しているが証明がないし,上位の提出を見ても $O(n^3)$ の定数倍高速化などである気がしています.

とりあえず答は適当な交点 $O(n^2)$ 個の交点の中にあります.私はそのような交点候補の生成を適当な回数繰り返し,十分な回数候補として挙がった交点のみを $O(n)$ 時間かけて判定することで AC しました.

CodeForces
スポンサーリンク
シェアする
maspyをフォローする
maspyのHP
タイトルとURLをコピーしました