M-SOLUTIONS プロコンオープン 参加記

企業コンは苦手意識があるが...

ABCD4完、103:30で、257位でした。

経過

A, B

はい。

C

n-away, m-away状態の期待値をE_n,mとおくと、これらについて漸化式が立つ。しかしそのままDPしてもO(N^2)なので困る。

とりあえず小さい場合に計算してみると、p=A/(A+B), q=B/(A+B)とおいて、答えがpqの多項式になるっぽいと分かる。とりあえずN=4くらいまで計算する(たくさん時間がかかる)。するとラマヌジャンが降臨し、係数にカタラン数が出てきそうだと予想が立つ。

でも分からんのでいったんパス。時間を無駄にする。

D

maxを除いた和は作れ、「葉に最小のものを置き、つながる辺を消去する」をくり返すとできそう、となる。問題は実装だが、なんとなくpriority_queueがよさそうと気付けた。次数と頂点をペアにして突っ込み、順次更新するとよい。ダイクストラ法のライブラリを整理した経験が活きた。70分でAC.

C(続き)

とりあえずカタラン数の係数だと決めうちして実装。具体的に書き出し、計算がO(N)になるように直前の係数をうまく利用しながら、苦労して実装。途中ミスがあって答えが合わず焦るが、何とか修正。最後のサンプルが合致して勝ちを確信→AC(103分)

E

nがでかいと0になるけど、それ以上のことは分からず。諦めてこのブログを書き始める()

F

みてないよ

解き直しと感想

よくわかんないけど楽しかった(こなみ)

C

絶対もっと簡単に解けるはずなんだよな。

N勝i敗でどっちかが勝つ確率は普通に計算できますね...

引き分けは無視して後から定数倍できるのはそうなので、

指摘もあったが、「答えを閉じた式で出さなくてもよい」「計算できるシグマの形で表せさえすればよい」というのをもっと強くイメージすべきですね...

D

なんかふつうにDFSをするといいっぽい。あんまりよく分かってないけど...

(追記) 分かっていない理由が分かった。

c_1, ..., c_nは降順ソートしておく。「最大を除いた和c_2+...+c_n」が答えになる証明を考えると、c_1以上は0個以下、c_2以上は1個以下、c_3以上は2個、...とならざるを得ない。よってc_2+...+c_n以下しかない。しかもそれを実現するのはc_i以上がすべて連結することが必要十分。同じ数があっても問題ない。

要は考察が足りてなかった。ちゃんと証明を考えると完全な言い換えができ、実装も簡単になる(DFSで隣り合う頂点を訪れそのつど数字を置くとよい)。この辺のバランスは大事にしないと...(というかこういう思考を素早くしないといけない)

 

E

あ、dで割ったら階乗じゃーん、なんで思いつかなかったんだ、チクショー!

あとは階乗を累積で持てば終わりですね。悲しいなぁ...

これだから数学回は嫌い(数オリ勢とは思えない発言)

 

後は随時更新します。

結果

pf2037で、レートは1699→1744 (+45) :)

最高値更新だが、もっとやれた感。競プロ独特の思考をもっと身に付けたいですね。