複雑性分析
元々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(1、0、1 )。 36 フラグ= 0 。 37の DFS(N / 2 + 1、0、1 )。 38 COUT << ans- 2 << ENDL。 39 リターン 0 ; 40 }