Hatena::Grouptopcoder

not's memo

 | 

2014-11-28

ハル研究所プログラミングコンテスト2014参加記

09:58 | はてなブックマーク - ハル研究所プログラミングコンテスト2014参加記 - not's memo

※この記事は結果発表前に書いています


提出したコード

https://gist.github.com/not522/9a398898d258b24a4512


方針

忙しくて時間がなかった(実際にかけた時間は12時間くらい)ので楽に点数が上がりそうなのだけ実装する

そもそもかなり自由度が低いゲームなので、貪欲でもそこそこの点数が得られそうと予想していた


やったこと

Parameter::CharaAddAccelWaitTurnごとくらいで加速

player.accelCount()を見て適宜調整

基本的には2個くらい残す

離れていってるなら残り1個だろうと加速

最後の一手なら加速

加速なしで次の蓮に到達できるならそのまま

次の蓮の位置を考慮して速度ベクトルを決める

きちんと出す(TODO昔書いた記事のURLを書く)のが面倒だったのでてきとう

流れを考慮

てきとう(-2*field.flowVel())にやった

加速しなくても目標の蓮に同じターン数以下で到達できるなら加速しない

加速したら次のターンで先輩忍者にぶつかる場合は加速回数が余っていない限り加速しない

やってないこと

蓮の位置を考慮して何回ごと加速すればよいか決める

ちゃんとやれば1〜2万点はあがりそう

上位と差が付いたのはたぶんここ

len(hoge)をメモ

すぐできるし、これはやったほうが良かった(ボトルネックになってる)

スタート直後の最適化

無理でしょ

ゴール直前の最適化

めんどいんじゃ

流れをちゃんと考える

めんどいn(ry

先輩忍者をちゃんと考える

めんd(ry

次の次の蓮をちゃんと考える

m(ry


マジックナンバー

10ターンごとに加速

Parameter::CharaAddAccelWaitTurn

-2*field.flowVel()

2*Σ_{i=0}^9(0.875-0.0625*i)/0.875が13.5くらいなのでnormalizeとかすれば10くらいになって良さそう

ちゃんと確かめたわけじゃないのでてきとう

その他

100ステージ×100ケースでパラメタ調整した

 |