東京海上日動プログラミングコンテスト2020

東京海上日動プログラミングコンテストに参加しました。

先週のことのはずなのに遠い昔のことのように感じます。

B問題で絶対値のつけ忘れで1WAはもったいなかったですね。

 

Tasks - Tokio Marine & Nichido Fire Insurance Programming Contest 2020

All Submissions - Tokio Marine & Nichido Fire Insurance Programming Contest 2020

 

A-Nickname

連続する3文字ならどこでもいいので、先頭の3文字をfor文で取り出しました。

 

B-Tag

一読した直後は子供がそれぞれ一秒あたりちょうど同じ距離しか進めないのかと思ってしまいました。なので最適に動いたら絶対に捕まらないのでは?となりました。

もちろんそんなわけはないので、二人の時速差とスタート時の距離を求めて割ることで時間内に捕まえられるかが分かります。スタート時の距離を求める際に絶対値をつけ忘れてWAを出しました。もったいないですね。

 

C-Lamps

読んでもあまりよくわからなかったので、サンプルを見ながら適当にいくつか試しました。一回目の操作以外は真ん中から順に増えていって最後に端の電球の強さがNになって、以降変化がなくなるということが分かりました。また、だいたいlogNより少し大きいくらいですべての電球の強さがNになるということもわかりました。これらは左右均等に光が届く関係上真ん中あたりは両端からの光が比較的早く届くようになるのに対し、両端に反対の端の方からの光が届くようになるのは当然最後になるからです。一回操作するごとに各電球の強さがだいたい2倍弱くらいになっていきます。

K回、それぞれの電球が届く範囲のすべての電球に順に加算していくととても間に合わないので、一つ前の操作から新しく届くようになった電球にのみ加算処理を行えばいい感じになったりしないかなと考えました。結局TLEもWAもとれずに時間切れになりました。途中で、この方針のまま続けても解ける見込みはないとわかっても、とりあえずWAだけでも取りたいとこだわってしまうのが本当によくないです。

累積和については知ってはいたのですが、解説を見るまでは少しも頭に浮かびませんでした。一応累積和で解けるということを理解した状態で今日解いてみたところすぐに解けてよかったです。

 

D以降はまだしばらくは手が出なさそうでした。

以上です。