真ん中のバイナリ検索タイトルレコードブラシで会います

複雑性分析

元々n層、もともと複雑さはO(2 ^ n)は、途中でそのミート複雑さはO(2 ^(N / 2))となるN / 2層、元の位相が複雑であればあると仮定しましたパーティにオフと同等以上

N = 40の爆発が2 ^ 40 Tは確かに飛ぶことがわかった場合、その単語の途中で出会う2 ^ 20を作製することが可能です。

 

羅バレーP2962 [USACO09NOV]ランプが点灯

  • 唯一の光35は、全てのランプのバイナリ状態を表すことができるので、検索が検討します
  • 1 0が示すの外光が、オンであることを示し
  • そして彼の光と他の一つの隣接ビットがランプ1の位置を切り替えるように設定され、アレイはリチウムで表され、前記押しスイッチは、排他的OR IのLiに相当する[I]
  • エネルギーが半分に達する前の状態のメモリマップでスイッチの最小数
  • まず、第1のバーストの検索の半分、更新マップ、答えを補完するアップデートがあるかどうかを確認するために、後半Zaibaoを検索
  • 1は、ANS-2にようやく開始され、状態の前半は、とてもCNTランプを押してくださいする必要がなかったことに注意してください
  • 実質的にhzwerコードをコピー:
    1つの#include <ビット/ STDC ++ H>
     2  
    3  使用して 名前空間STDを、
    4のtypedef 長い LL。
    5  int型 N、M、フラグ= 1、ANS = 1E9。
    6 LLのX [ 40 ]のLi [ 40 ]。
    7 LL E = 0 8マップ<LL、int型 > ST;
    9つの 
    10  空隙 DFS(INT今、LL dを、int型CNT){
     11      であれば、今(== N / 2 + 1 &&フラグ){
     12          であれば(ST [D] =!0)ST [D] = 分(ST [D]、CNT)。
    13          他の ST [D] = CNT。
    14          リターン;
    15      }
     16      であれば(今== N + 1 ){
     17          であれば(ST [ED]!= 0)ANS =分(ANS、ST [ED] + CNT)。
    18          リターン;
    19      }
     20の      DFS(今+ 1、D ^のLi [今]、CNT + 1)。// 按下开关
    21の      DFS(今+ 1 、D、CNT)。
    22  }
    23  
    24  INT メイン(){
     25      CIN >> N >> M。
    26      [X 1 ] = 1 27      のためにint型 I = 2 ; iが<= N; iが++)X [i]は= Xの[I- 1 ] << 1 28      int型A、B;
    29      のためには、int型 i = 0 ; iがm <I ++は{)
     30          のscanf(" %d個の%のD "、&​​、&B)。
    31          のLi [A] ^ = X [B]。
    32          のLi [B] ^ = X [A]。
    33      }
     34      のためのint型 i = 1 ; iが<= N; iが++){たLi [I] ^ = X [i]は、E ^ = X [i]は、}
     35の      DFS(101 )。
    36      フラグ= 0 37の      DFS(N / 2 + 101 )。
    38      COUT << ans- 2 << ENDL。
    39      リターン 0 ;
    40 }
    (>人<;)

     

おすすめ

転載: www.cnblogs.com/jiecaoer/p/11707285.html