制約を読み、計算量を選ぶ
N の値から適切なアプローチを判断します
「制約を読み、計算量を選ぶ」はCoddyKit上の無料Competitive Programming Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCompetitive Programming Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Competitive Programming Academyコースには全4レッスンが含まれています。
制約は手がかり
すべての問題には、n や値の制限が示されています。こうした制約から、出題者が想定している計算量を読み取れます。🔍
まず n を確認する
何かを設計する前に、制約における最大のnを確認してください。n の大きさによって、二次時間、線形時間、対数時間のどれが必要かが決まります。
小さい n なら自由に試せる
n が20以下なら、指数時間の全探索でも処理できます。制約が小さい場合は、恐れずにすべての組み合わせを試してみましょう。
n は 500 まで
n が数百に達する場合でも、O(n^3) の解法なら通過できます。三重ループや、要素のペアに対する基本的な DP も使える範囲です。
n は 5000 まで
n = 5000 前後なら、O(n^2) を目標にしてください。配列に対する二重ループは約 2.5 × 10^7 ステップとなり、まだ予算内に収まります。
n は 10^5 まで
n が 10^5 や 10^6 に達する場合は、O(n log n) または O(n) が必要です。ソート、累積和、尺取り法が定番の道具になります。
n は 10^9 まで
n が10億なら、n 回のループは通用しません。数学的な方法や答えに対する二分探索を使い、O(log n) または O(1) にする必要があります。
値の範囲にも注意する
値に関する制約も重要です。大きな数は、他の言語ではオーバーフローに注意する必要があることを示し、剰余算を使うヒントになる場合もあります。
テスト全体の n の合計
複数テストケースの問題では、各 n ではなくn の合計に上限が設定されることがよくあります。ループを安全にどこまで大きくできるかが変わるため、注意して読んでください。
逆算して方針を立てる
n から目標とする計算量を決め、その計算量を実現できるアルゴリズムを選びます。n に設計を導いてもらう方が、推測して後から書き直すよりも効率的です。
対応表を覚える
この表を頭に入れておきましょう。制約と計算量の対応表があれば、コンテスト中に制約をざっと見るだけで、すぐに方針を立てられます。
確認問題
n から適切な計算量を判断してみましょう。
復習
制約を目標として読めるようになりました。小さい n なら全探索、10^5 なら n log n、10^9 なら log または数学的な方法が必要です。n に方針を選ばせましょう。🗺️
よくある質問
「制約を読み、計算量を選ぶ」レッスンは無料ですか?
はい。「制約を読み、計算量を選ぶ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Competitive Programming Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Competitive Programming Academyコースには全4レッスンが含まれています。
「制約を読み、計算量を選ぶ」で何を学びますか?
N の値から適切なアプローチを判断します ブラウザで直接実行するハンズオンコードでCompetitive Programming Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Competitive Programming Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCompetitive Programming Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「制約を読み、計算量を選ぶ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCompetitive Programming Academyレッスンでコードを書いて実行できますか?
はい。すべてのCompetitive Programming Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Big-O で演算回数を数える
- 10^8 の経験則
- 制約を読み、計算量を選ぶ
- TLE が起きる理由と見つけ方