2023年6月26日月曜日

TOYOTA Programming Contest 2023 Summer(AtCoder Heuristic Contest 021)

 最終順位319位で、予選通過はダメでした。(ツイッターで317位と書いてしまったけどまだジャッジ中だったみたい)

コンテスト後のツイート


 解法は、ツイートの通りで、

・大きい順に、経路のコスト(置きたい段との差をコスト)を求めるDPをしてコストが小さいものを採用、としました。

 ただ、これは勘違いしていたせいです。ツイートを見ていたら同じ勘違いをしていた人が何人かいたけど、

・各数字が、0,1,2,..と並べたときと同じ段にならなくてはいけない

 と勘違いしていました。それで最初言ったような解法になってしまった。


 アルゴリズムの問題でもそうだけど、誤読とか、勘違いとかを一度してしまうと修正するのは難しい。
 今回は、最初に「適当に上下で値が入れ替わっていたら交換しまくる」というのを提出しているので、それでOKだったことを振り返る余裕があれば気付けたはずなのだけども……。まあそんな余裕はなかった。


 ただ、この勘違いがなくても、上手くできたかどうか。

 今回は、「13426585点が取れる貪欲アルゴリズム」を思い付けるかどうかが鍵だったが、これで上手くいくというのはそれほど明らかじゃない気がした。
 さらに、その改善ともなると、うーん。Kiri8128さんの解説の評価関数も全く思いつかなかった。これを実装したら確かに改善したけど、自分で思いつけたかというと……。

 ただ、コンテスト中、順位表で上位に同じ点数の人がたくさんいるのは見て、「何か簡単な解法があるはず」とは気付いていたのだから、とにかく色々な貪欲を試してみるべきだった、とは思う。

・小さい数字から試す
・上の二つのうち大きい方と交換

 というの自体は両方とも考えたことはあったのだから。

 それで自分の点数より伸びるとは思わなかった(ことと、勘違いしていた)から試さなかったのだけれど、それでも実装してみて、他にどんな解法やパラメータがあるか探らなくてはいけなかったのだろう。

0 件のコメント:

コメントを投稿