0Pricing
Competitive Programming Academy · レッスン

制約を読み、計算量を選ぶ

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Big-O で演算回数を数える
  2. 10^8 の経験則
  3. 制約を読み、計算量を選ぶ
  4. TLE が起きる理由と見つけ方
← Competitive Programming Academyに戻る