JAPLJ Contest
寝起きでコンテストに出るのは良くないと思いました。
- 30分遅れで参戦。
Problem A: Anemone
- ・・・え?Aのにいきなり難しそう?
- とりあえず全問目を通してみる。
- 簡単そうな問題がない。泣きたい。
- Standingsを見る限りだとAが一番簡単なのか・・・。
- とりあえず全問目を通してみる。
- とりあえず、gn(t) の形について思いを馳せてみよう。
- ...
- ...
- ...おお。
- だんだんギザギザが増えてく関数なのね。
- で、問題文を整理すると、
- 適当な k をとって、y = gn(t) と y = k の交点がちょうど p 個とすることが出来るような最小の n
- を答えればいいわけだ。
- 考えるべきパターンは k = 0, k in (0, 1), k = 1 の3通りで、交点がそれぞれ 2n-1+1, 2n, 2n-1個。
- 下からループまわすんだから、2n-1は無視して2パターンだけ考えれば良いよね。
- 書いた。submit.
- No - 30% scored.
- あれれ?
- よくわからないので次に行こう。
- あれれ?
Problem B: Banksia
Problem A: Anemone
- ケースごとのジャッジ結果が見られることに気付いた。
- 最初のケースだけ落ちてる。コーナーケースか・・・。
- よく見たら p = 0 がありえるらしい。
- 自分のプログラムに入れてみると -1 が返ってくるけど...
- 問題文のとおりに解釈するなら、n = 0 で k < 0 または k > 1 が正しい?
- とりあえず対応してみた。
- 他にコーナーケースはないだろうか。
- p = 1 を入れてみる。-1. あれ?
- あぁ、2n-1はいらないようでいて、n = 1 のときだけ必要になるのか。修正。
- p = 1 を入れてみる。-1. あれ?
- submit. Accepted.
- どっちのケースで落ちてたんだろう?
Problem C: Cosmos
- Bをまじめに書くのがしんどいのでCに逃げてみる。
- DPの臭い・・・。
- ...じゃない?
- 隣り合った赤白は問答無用で消せる。
- 新しく隣り合った赤白が出来ればそれも消せる。
- ひたすら消していけばいい気がしてきた。
- 書くか。
- いや、適当に書くと O(n) にならないぞ・・・?
- 書くか。
- ひたすら消していけばいい気がしてきた。
- 新しく隣り合った赤白が出来ればそれも消せる。
- あ、stackに積みまくればよさそう。
- 遅い遅いと評判だけど意外とどうにかなると信じてcinとvectorで特攻。書けた。
- こういう難しそうだけどきれいに実装できる問題って良いよね。
- submit. 30%ぐらい scored.
- あからさまに最大ケースでTLEの予感。
- cinをscanfに、vectorとstackを配列に書き直してsubmit.
- Runtime Error.
- n = 100,000 だと思ってたけど 500,000 だったのね。配列の長さ直してsubmit.
- Time Limit Exeeded.
- あー、coutをprintfに直してなかった・・・。
- Accepted.
- ひどすぎる。
- それどころか辞書順最小とか答えがなかったら -1 とかの条件を全部読み飛ばしていたことに翌日になって気付いた。
- Bを書き直そうかと思ったけど、時間がなかったので終了。
- いい問題セットだったのに、コンテスト中は全然頭が回らなくてもったいないことをした・・・。
- JAPLJ先生ありがとうございました!