250数列numbersを与えられる。1回の操作である数字に1を加えるか1を減じるかできる。個の連続する数字を数列の中に作るとき、必要な操作の最低数を答える問題。最低値を取ればそれが答えとなる。500xy平面上のいくつかの点にブロックが置いてある。原点からスタートし、1秒で東西南北のどれか1つの向きに進めるとする。ブロックのあるマスには行けない。秒後のx座標のとりうる最大値を答える問題。x,yの負符号が邪魔なので適当にインクリメントしておく。平面操作の問題だが、ここでは深さ優先探索よりも幅優先探索の方が重複なく効率よく最大到達距離を操作できる。最大1000なので愚直に探索すると間に合わないので、一度訪れた点を管理しておき、訪れていない点へ幅優先で検索していけば訪れうるすべての点を効率よく探索できる。あとはそのx座標の最大値を答えればよい。移動してもansを超えられない場合、そこで探索を打ち切ることで計算量を減らしている。この解法はpythonだと計算量がきつく、計算量をきちんと削減していかないと間に合わない。numberOfTeams[i]のチームたちはscore[i]の得点を持っている。試合は2チームで行い、勝つと3得点、負けると0得点を得る(引き分けはない)。各チーム残り2試合を戦うことになっている(同じ組み合わせで2試合戦ってもよい)。自分のチームの順位は同じ得点のチームたちの中で最高とする。すべての試合が終わった後、自分のチームが到達しうる最高の順位を答えるという問題。(トーナメントという設定だったけど別にトーナメントの状況じゃないように思える。)自分のチームが残り2試合勝つ(6得点得る)とするのは当然だが、他のチームの勝ち負けをどうするかが問題となる。自分の得点との差を考えるとそのチームの勝ちが自分のチームの順位に影響を与えるかどうかがわかる。1.勝っても自分のチームの順位に影響を与えない。0で結果によらず自分のチームより順位が悪いチームたち2.勝つと自分のチームの順位に影響を与える可能性がある。2度勝つと自分より順位が良くなるチームたち得点差によって上のように分類できる。勝っても自分の順位に影響を与えないチームから勝ってもらいたい。等しく、勝ちの数をこれに合わせる必要がある。できるだけ1に属するチームに勝ってもらい、それでも必要な勝ち数に届かなければ2-2に属するチームに1度ずつ勝ってもらう。それでも必要な勝ち数に届かなければ2-1に属するチームに2度勝ってもらい、さらに必要ならば2-2に属するチームにもう1度勝ってもらう。1-1に属するチーム数に自分を追い抜いたチームの数を足し合わせれば答えとなる。ans落ち着いて考えればHardにしては簡単な方だと思う。読者になるリンクTopCoderCodeforcestwitterGitHubQiitaはてなブログをはじめよう!roiti46さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。