tardigradeの競プロ日記

マラソンコンテスト(プログラミング)について書きます

ICPC2023模擬国内参加記

2023/06/24に開催された模擬国内にチームtsurataNで参加しました。

メンバーはN_haraさん、pitsuさん、僕(tardigrade)です。

ICPCはitigoさん、pitsuさん、僕で参加しますが、itigoさんが学会の発表で予定が合わなかったので、代わりにN_haraさんに来ていただきました。

結果はABCDEの5完で16位でした。

~コンテスト直前

大学内の図書館の一室を予約していたんですが、色々あって開始2分前くらいまでドタバタしていました。

なんとか時間通りに始められて良かったです。

コンテスト開始直後

pitsuさんが問題文を印刷しにいって、他二人がA問題を見るという立ち回りでした。

A問題

はい。N_haraさんが綺麗に実装してくれて難なくAC。

実装している間に問題文の印刷が終わったので、僕がB問題を、pitsuさんがC問題を眺めていました。

B問題

A問題を通した後ノータイムで実装に移ってこれも難なくAC。

普段US配列を使っている関係で、僕は実装をしない方針だったので、pitsuさんに考察を話して実装してもらいました。

実装しないならBをpitsuさんに見てもらったほうが良かったかも。

C問題

pitsuさんがB問題を実装している間にN_haraさんと二人でC問題を考えていました。

僕「上二つだけ使えば良さそうですね」

N_haraさん「あ、ほんとだ。じゃあ121212....111...みたいにするのが最適ですね」

僕「え、天才です」

B問題を通した後、これもほとんどノータイムで実装に移ってAC。

オーバーフローでペナを吐いたので、「本番はlonglongだけ使おう」という話になりました。

ちなみにこの時点で全体2位で、結構びっくりしていました。

D問題

N_haraさんがC問題を実装している間にpistuさんと二人でD問題を考えていました。

pitsuさん「DPっぽいな~」

pitsuさん「こんな感じかな~」

僕「すごい、良さそう」

pitsuさん「でも10**11くらいかかるね~流石に遅いかも」

この辺でCが通ったので、とりあえずpitsuさんに実装を始めてもらいながら、N_haraさんと高速化の方法について考え始めます。

僕「累積和を持ってこんな感じでこうすると256のループが一個削れて高速化できます」

N_haraさんpitsuさん「「ほんとじゃん」」

これでDが通って4完です。

E問題

幾何というよりは数学問題だね~という話に。

僕「傾きの近似みたいな感じ?上からと下からでいい感じに抑えたいですね」

↑が良くない方針で、かなり時間を溶かしました。反省。

~~残り20分くらい~~

僕「これ、最短は絶対1/a(厳密には違うけどお気持ち)になりそうで、そうなるとこの一次不定方程式が解ければよさそう?」

↑天才をしました。偉い。

N_haraさん「拡張ユークリッドの互除法ありますよ~」

pistuさん「実装しますね~なんか返ってきた値の絶対値を取るとよさそう~正当性わからないけど時間ないし絶対値とって出してみますね~」

N_haraさん僕「「まぁこんなテキトーで通らないですよね~」」

pitsuさん「通った!」

これで5完です(え?)

終わり

int型は使わないようにしよう。

模擬国内の運営に携わってくださった皆さん、急遽ヘルプで入ってくれたN_haraさん、ありがとうございました。

国内予選勝つぞー!