1の#include <cmath> 2の#include <cstdioを> 3の#include <CStringの> 4の#include <iostreamの> 5の#include <アルゴリズム> 6 使って 名前空間STD。 7 8 CONST INT INF = 0x3f3f3f3f 。 9 10 のint N、Tの[ 1010 ]、B [ 1010 ]、F [ 1010 ] [ 256 ] [ 20 ]。 11 12 のint main()の 13 { 14 のint T。 15 CIN >>T; 16 一方(T-- ) 17 { 18 CIN >> N。 19 のためには、(int型 i = 1 ; iがn = <; iは++ ) 20 { 21 CIN >> T [I] >> B [i]は、 22 } 23 のmemset(F、0x3fを、はsizeof (F))。 24 F [ 1 ] [ 0 ] [ 7 ] = 0 。 25 のためには、(int型 i = 1 ; iが<= N; I ++) 26 のための(INT J = 0 ; J < 256 ; J ++ ) 27 のための(INT K = - 8 ; <= K 7 ; kは++ ) 28 であれば(F [I] [J] [K + 8 ] =!INF) 29 { 30 であれば(J&1)F [I + 1 ] [J >> 1 ] [K + 7 ] =分(F [I + 1 ] [J >> 1 ] [K + 7 ]、I [F ] [J] [K + 8 ])。 31 他 32 { 33 のint L = INF。 34 のために(INT H = 0 ; H <= 7 ; H ++ ) 35 であれば(!((J >> H)1 )) 36 { 37 ならば(私はH +> l)をブレーク。 38 lは=分(L、Iは[iが+ H + Bを+ H])を、 39 F [i]は[J | (1 << H)] [H + 8 ] =分(F [I] [J |(1 << H)] [H + 8]、F [i]は[J] [K + 8 ] +(I + K(T [I + K] ^ T [iが+ H]):0 ))。 40 } 41 } 42 } 43 のintミント= INF。 44 のためには、(int型 i = 0 ; iが<= 8 ; I ++ ) 45 ミント=分(ミント、F [N + 1 ] [ 0 ] [I])。 46 coutの<<ミント<< てendl; 47 } 48 }