paizaでSランクを目指す その2(終)
解けてしまった。前回ちゃんと対策とか考えたのが恥ずかしくなってきた。
よくよく考えたら、前回の記事にはったQiitaの記事、ギリギリpaizaの規約に違反してない? 大丈夫?
競プロって、最初のほうはアルゴリズムを知っているかどうかの勝負で、アルゴリズムを勉強すればするほど解ける問題が増える。
でもある程度までいくと、基本的なアルゴリズムを知っていることは前提として、じゃあどのアルゴリズムを使うかという勝負になる気がする。
何も考えずに総当たりするのは実装は簡単だから、仮に総当たりで遅くてもすぐに書き直せば良い。「動的計画法を使うか」とか思うと、修正にかかる時間は総当たりよりも長くなる。
問題の条件(与えられる数値Nというのは、どれくらいの値になるのか?とか) を見て、N≦100くらいなら総当たりで全然いけそうだ。とか、今回はN≦10^7だから、pythonでは総当たりはきつそう。何か高速化できないだろうか。とか考える勝負な気がする。
だから、前提として「この問題は20分で解けました」みたいな情報を与えられると、「20分か。問題の把握に3分、テストケースの値を境界値とかに変えて試したりもするだろうから、その作業に5分。とすると残り12分くらいでコードを書いたのかな。12分で書けるコードとなると、そんなに複雑なことはしてないのか?」みたいな勘繰りができてしまう。
これが「この問題は15分で解けました」「この問題は10分で解けました」とかになると、さらにコードの推測がつく。
paizaの規約には「問題のヒントをネット上に書くな」みたいのがあるけど、「20分で解けました」と書くのは結構大きなヒントじゃないのかな。
と、なんだかズルをした気もするけど、一応Sランクになれました。
今後他人に僕の事を紹介するときは、「彼は日本で最もプログラミングができる人のひとりです」と、中学英語の例文みたいに紹介してください。