・500点問題
1直線上に質量の与えられた物質がN個置かれていて、さらにもう1つ置く時に、万有引力的につり合う位置はdoubleでN-1個返せって問題。
高校の物理とかで、問題が言ってることは理解できるんだけど、
フツーにやったら高次方程式になりそうで、プログラムで解き方が分からなくて断念。
→2分探索で解けるよと教えてもらったのでやってみた。
まず、x[n]とx[n+1]の間に一個あるんだから、とりあえず真ん中をとって計算してみて、
左の方が大きければ求めたい点は右半分にあり・・・ってなって、
それを再帰でぐるぐるまわして行くと、範囲が半分の半分の半分の・・・ってなって最終的に誤差が1e-9になれば良くって、
誤差が1e-9ってめっちゃ精度高いように見えるけど、2^30が10^9くらいだから30回くらいやれば答えは出て、1回のループが意外と思い計算じゃないのでタイムアウトにもならないみたい。
・1000点問題
コンテスト終了力後に解き終わって、あとでシステムテストしてみたら通ってた涙
問題は、
とりあえず方針として、
String配列はややこしいので、1桁ずつのデジタル数字に直す。
切れた電球に何かを加えるともとの表示になるので、つまり、今すでに光っている部分を光らせない数字の補集合をとれば良い。
簡単にするのに光ってるのを1、消えてるのを0にして、
事前に用意した1とか2とかのとANDをとって、変化がなければおkってこと。
1直線上に質量の与えられた物質がN個置かれていて、さらにもう1つ置く時に、万有引力的につり合う位置はdoubleでN-1個返せって問題。
高校の物理とかで、問題が言ってることは理解できるんだけど、
フツーにやったら高次方程式になりそうで、プログラムで解き方が分からなくて断念。
→2分探索で解けるよと教えてもらったのでやってみた。
まず、x[n]とx[n+1]の間に一個あるんだから、とりあえず真ん中をとって計算してみて、
左の方が大きければ求めたい点は右半分にあり・・・ってなって、
それを再帰でぐるぐるまわして行くと、範囲が半分の半分の半分の・・・ってなって最終的に誤差が1e-9になれば良くって、
誤差が1e-9ってめっちゃ精度高いように見えるけど、2^30が10^9くらいだから30回くらいやれば答えは出て、1回のループが意外と思い計算じゃないのでタイムアウトにもならないみたい。
・1000点問題
コンテスト終了力後に解き終わって、あとでシステムテストしてみたら通ってた涙
問題は、
"###...#.###.###.#.#.###.###.###.###.###", "#.#...#...#...#.#.#.#...#.....#.#.#.#.#", "#.#...#.###.###.###.###.###...#.###.###", "#.#...#.#.....#...#...#.#.#...#.#.#...#", "###...#.###.###...#.###.###...#.###.###"みたいな感じでデジタル表示で数字を表していて、いくつか電球が切れた(?)ものが与えられて、もともと表示していた可能性のある数字の平均を返す問題。
とりあえず方針として、
String配列はややこしいので、1桁ずつのデジタル数字に直す。
切れた電球に何かを加えるともとの表示になるので、つまり、今すでに光っている部分を光らせない数字の補集合をとれば良い。
簡単にするのに光ってるのを1、消えてるのを0にして、
事前に用意した1とか2とかのとANDをとって、変化がなければおkってこと。
コメントする