1 #include <cmath> 2 #include <cstdio> 3 #include <cstring> 4 #include <iostream> 5 #include <algorithm> 6 using namespace 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 while (T--) 17 { 18 cin >> n; 19 for (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 for (int i = 1; i <= n; i++) 26 for (int j = 0; j < 256; j++) 27 for (int k = -8; k <= 7; k++) 28 if (f[i][j][k + 8] != INF) 29 { 30 if (j & 1) f[i + 1][j >> 1][k + 7] = min(f[i + 1][j >> 1][k + 7], f[i][j][k + 8]); 31 else 32 { 33 int l = INF; 34 for (int h = 0; h <= 7; h++) 35 if (!((j >> h) & 1)) 36 { 37 if (i + h > l) break; 38 l = min(l, i + h + b[i + h]); 39 f[i][j | (1 << h)][h + 8] = min(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 mint = INF; 44 for (int i = 0; i <= 8; i++) 45 mint = min(mint, f[n + 1][0][i]); 46 cout << mint << endl; 47 } 48 }
【状压dp】P2157 [SDOI2009]学校食堂
猜你喜欢
转载自www.cnblogs.com/thjkhdf12/p/11641169.html
今日推荐
周排行