Ecasdqina's MEMO.

メモ帳.

PCK2017予選参加記

PCKに参加しました。

高専に入ってから競プロを始めて、PCKの話が流れてきたのでとりあえず参加してみようって感じで友人を連れて参加した、チーム名は「IQ114514」。
PCK予選当日 ぼくが競プロ歴1ヶ月(atcoder:722)って感じで、友人は競プロ経験が殆どなかったっぽい。

当日

0:00から過去問を解き始めて気づいたら5:00になっていて就寝、8:00に起き 9:00に出発し 11:00に学校に着いた。
このときにノート等の持ち込み可なことを知り、コンビニで買ったノートにいろいろメモしていた(あまり役に立たなかった)。
13:00にIDとPasswordの書かれた紙が配布され、13:30に予選が開始した。

予選

友人が12、ぼくが345って感じにするつもりだったけど、つい1を解いてしまった(申し訳ない)。
最終的にぼくが1345 友人が2 という形になった。
5完 4WA 134位(16:00時点)

問題

糞解法だと思いますが解法を置いておきます。

1 お年玉

二人のお年玉を受け取って足したものを2で割って終わり。

2 買い物

(b-m<=f?(b-m>=0?b-m:0):“NA”) みたいなif文を書く(これはerrorする)。

3 9月X日

9日の時に土曜日なので X ≡ 2 (mod 7) の時に土曜日になるので
string s[7]={“thu”,“fri”,“sat”,“sun”,“mon”,“tue”,“wed”}; みたいなのを作って s[X%7] で終わり。

4 エルの予約

すでに存在する予定と新しい予定の関係が次のようになれば良い。
[s f a b] or [a b s f]
入力のたびに調べて終わり。
はじめはいもす法でやろうとしたけど実装力のNASAでできなかった(1WA)。

5 電線

電線は必ず全ての縦線と横線とに交わるので (x+1)+(y+1) だが重複があるのでそれを数えて引く。
gcdを求める関数gcd(a,b)を作っておく。
元の図を左に90°回転して考える、この時電線の変化の割合は {(x2)/gcd(x2,y)}/(y/g) だが既約分数の形で考えたいのでそれらをx2, y2とでもおいておく。
するとi=0〜nでiがy2の倍数のとき(x2/y2)iが整数になることが分かる、また2×1[m]のブロックなので、さらに(i/y2)x2が2の倍数である必要がある(ここで1WA)。
これらを全て抜けた数をカウントして (x+1)+(y+1)-cou で終わり。

6 トランポリン

DPか貪欲法かな〜と思ってDPを書いてみたら計算量がまずったので悩み続けてるうちに時間切れ。

おわりに

自分の実力を知れたいい機会だったと思う、6の壁を抜けることが重要だと思った。
これからも競プロは続けるつもりなのでいつか優勝してみたいものだ。