1 クラスソリューション: 2 DEF xorQueries(自己、ARR:' 一覧の[int] '、クエリ:' リスト[リストの[int] ') - > ' リスト[INT] ' : 3 N = LEN(ARR) 4 prefixsum = [ARR [0] * N 5つの RES = [] 6 ための I における範囲(1 、N): 7 prefixsum [I] = prefixsum [I-1] ^ ARR [i]は 8 9 M = LEN(クエリ) 10 以下のための私中範囲(M): 11が 始まる= クエリ[I] [0] 12 端=クエリ[I] [1 ] 13 であれば開始== 0: 14 CUR = prefixsum [END] 15 他: 16 CUR = prefixsum [END] ^ prefixsum [BEGIN-1 ] 17 res.append(CUR) 18の リターン解像度を
アルゴリズム的思考:ビット・コンピューティング。排他的論理和演算の性質があります。x ^ x = 0の、かつx ^ 0 = X。
チェン氏の前にXORアレイprefixsum順。
閉区間[開始、終了]のために、唯一のXORに対応する境界位置prefixsumを使用する必要があります。
== 0を開始する場合、計算結果はprefixsum [終了]です。
prefixsum [BEGIN-1] - > 0を開始する場合、活性化prefixsum [終了]を算出します。