Isa@Diary

ソフトウェア開発やってます。プログラミングとか、US生活とかについて書きます。

GCJJ 決勝

予選はC-small/largeを通して通過しました。

決勝は
15pts 49:31 204th

…あああもう少し(4分ぐらい)でTシャツもらえたのになぁ…
B-smallでsubmit debugするんじゃなかった…

A-small/largeを通しました。
隣り合う2本の積の和を最大化すれば良いので、
長いものから順番に正、負方向に交互に置いていけばおk。

はじめsmallゲーだろうと思ってsmallはnext_permutation使って全探索して
その後Bに行ったのも敗因の一つではある。

Bはフェルマーの小定理っぽいけど互いに素じゃないときどうなるんだか解らなかった。
smallは(A mod C) == (A mod C)^k mod C となる最小のkを求めれば
(A mod C)^(A^A) = (A mod C)^((A^A mod k) + 1)になるんじゃないかと思ったけど実装できず。

うーん悔しかったなぁ。
C,D,Eは読んだものの取り組みませんでしたとさ。