基本的なアルゴリズム - 半分(原則と演習の詳細を照合)

内容:

核となるアイデア:

  図1に示すように、決定された間隔、目標値が間隔でなければならないように

  2、満たすためにプロパティを見つけます:

    二段抵抗を有する(1) すなわち、連続的な、二つの異なる特性に、同じ性質の同じ期間内)

    (2)答えはカットオフ点の二段階の性質です。

整数の除算:

   要約:

離散分布(すなわち、連続していない)の数、および切り捨てint型のデフォルトは、そう場合、無限ループが発生し達成することが容易である場合ので、数直線上の二進整数です。ここでは、2つの実装の種類と有効無限ループを回避することができ、バイナリ整数関連する原理です。 

      最初のカテゴリ:

        

      ANS(答えは)赤い部分の右端です。[L、R]、[L、M-1]に、[M、R 2つのセクション。

      赤色の範囲のMは、[必ずしもMはANS、R]間隔で説明した場合、

      他[L、M-1]の間隔に必ずしもANS。

      図の擬似コード:

        

PS:図に示されるよう:Mを評価した場合であれば「+1」、場合L = R-1、及び第一条件が満たされたときに、L決して変更、ループを終了することができません。

    第二のカテゴリー:

        

       ANSは緑色左点範囲です。[L、R]、[L、M]に、[M + 1、R 2つのセクション。

       グリーンゾーン内のMは、必ずしも[L、M]に記載ANS場合;および

       必然的に他のANS [M + 1、R];及び

      図の擬似コード:

        

        PS:条件が成立した場合には「1」、プログラムが無限ループに陥る場合示す証拠が見られるように、ここでは不要Mを求めて「+1」、。

    要約:

      二つのサブステップ整数:

      1. 、区間[L、R]を見つけるように間隔必見の答え
      2. 決意の条件を取得し、その二段、二段との答えを持っていることの条件は、境界のポイントでなければならないこと
      3. 分析の中点Mは、この条件の下で設立された
         設定している場合に関係なく、どのセクションの回答の、;
         満足していない場合は、関係なく、どのセクションの答えの。
      4. 更新モードが書き込まれている場合:R&LT =ミッドを、任意の処置なし L =ミッド;ミッド「+1」を算出します
         

第二に、実数バイナリ:

  数直線上の実際の連続的な、密な分布は、二つの要求が時間の正確なMに結合させることができるので、二つの境界点の整数は問題ではありません。
  本物の二分法はあまり前に十分に小さい数よりもRL限り、比較的単純であるので、すべての答えの後、これまで半サイクルをすることができます。唯一の注意点は、一般的に聞いて、最後の二つの質問に正確さ、精度の二分法の境界条件に考えられています。(例:請求項6小数点問題は、設定条件RLは小数8よりも大きい場合)

第三に、関連する演習:

  (前者は、リンクビットの元のタイトルの後に問題リンクに私の解決策です)

  AcWing 番号790の3倍の平方根のオリジナルタイトルのリンク(実際の二分法のテンプレートのタイトルを)     

  範囲789に多数のAcWing         オリジナルタイトルのリンクを  (バイナリテンプレートタイトル整数、書き込みの2種類が使用されています)

おすすめ

転載: www.cnblogs.com/yifeianyi/p/12185486.html