SRM 672
- masashinakata
- 2230
- 1
- 0
- 0
SRMのeasyなのだけれど逆シミュレーションを10000000000からやると時間が足りないので下から200000くらいまでやっていく。というのはすぐ思いついたけどサンプル2がいつまでたってもあわなかった。
2015-10-21 13:45:48こんな手が twitter.com/kenkoooo/statu…
2015-10-21 15:40:50はてなブログに投稿しました #はてなブログ TopCoder SRM 672 Div1 Easy: Procrastination - 宇宙ツイッタラーXの憂鬱 kenkoooo.hatenablog.com/entry/2015/10/…
2015-10-21 11:50:00約数をソートして最小のをとるx2回で3900ms、そこから約数を昇順で取る変更中に糸冬了。。kinabaさんみたく2通り一度に列挙してソート、なら実行時間的に間に合ったのか。
2015-10-21 15:46:21@masashinakata 更新しました competitiveprogramming.info/topcoder/srm/r…
2015-10-21 20:19:09帰宅じゃ。体だるかったけど、まぁなんとか…。今日もできるだけ早く寝たいところじゃ…。
2015-10-21 20:46:19わしはシミュレーション解で、x/h=a余り0or1になるようなaを、hを2から増やしていく。ただhを2→nまでループさせると、nは100億で間に合わないので、hを2→√nまでループさせて、その後x/a=h余り0or1でもあるから、aを√n+1→2までループさせたのじゃ。O(√n)
2015-10-21 20:53:50こういう問題で何もアイディアが思いつかないときは、まずは計算時間を無視したシミュレーション解を書いて良いと思うのじゃ。計算が間に合わなくても、ログを出力すれば、良いアイディアに気づくチャンスが増えるのじゃ。特にこの問題は、nを気にしなければシミュレーションは3分もあればかけるので
2015-10-21 20:58:49また、計算時間が間に合わないシミュレーション解と、高速化した提出解を比較することで、ポカミスで落ちることも防ぐことができるのじゃ。nは10000ぐらいまで全部テストすれば、まぁ落ちることはないでしょう。シミュレーションを書いた時間分のロスの元は取れると思うのじゃ。
2015-10-21 21:01:47さらに、仮に高速化解が思いつかないとか、間違えてたとしても、それはそれで、どういうケースでダメだったかが分かるので、チャレンジ時に強力なテストケースになりうるのじゃ。まだチャンスが残る。
2015-10-21 21:04:21競技プログラミングに限らず、一般のプログラミングでも、絶対正しいテストケースがあると、いろいろ使える。こういうことは、心がけしだいですぐ改善できるとこなので、おすすめ。
2015-10-21 21:06:04ま、そんなとこじゃ。あと、「素数のところを越えてタスクが移動することがない」を生かした別解(というか想定解?)が多くて、けっこう意外でした。
2015-10-21 21:07:57「とりあえず速度は気にせず愚直解を書いてみよう」 → 「書けぬ」 → Coding Phase has ended.
2015-10-21 21:10:33さっきのツイートaを√n+1→2ではなく√n-1→2ですね…。テストシミュ解を書けば、こ、こういうポカにも気づくことができるのじゃ!(開き直り)
2015-10-21 21:25:35