码迷,mamicode.com
首页 > 其他好文 > 详细

P2157-[SDOI2009]学校食堂

时间:2019-09-01 16:34:53      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:putchar   char   fine   printf   name   print   amp   ace   tchar   

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 typedef double db;
 5 #define INF 0x3f3f3f3f
 6 #define _for(i,a,b) for(int i = (a);i < b;i ++)
 7 #define _rep(i,a,b) for(int i = (a);i > b;i --)
 8 inline ll read()
 9 {
10     ll ans = 0;
11     char ch = getchar(), last =  ;
12     while(!isdigit(ch)) last = ch, ch = getchar();
13     while(isdigit(ch)) ans = (ans << 1) + (ans << 3) + ch - 0, ch = getchar();
14     if(last == -) ans = -ans;
15     return ans;
16 }
17 inline void write(ll x)
18 {
19     if(x < 0) x = -x, putchar(-);
20     if(x >= 10) write(x / 10);
21     putchar(x % 10 + 0);
22 }
23 int T[1003];
24 int B[1003];
25 int dp[1003][1<<8][18];
26 int main()
27 {
28     int TT = read();
29     while(TT--)
30     {
31         int n = read();
32         _for(i,1,n+1)
33         T[i] = read(), B[i] = read();
34 
35         memset(dp,INF,sizeof(dp));
36         dp[1][0][7] = 0;
37         _for(i,1,n+1)
38         _for(j,0,(1<<8))
39         _for(k,-8,8)
40         if(dp[i][j][k+8]!=INF)
41             if(j&0x1)
42                 dp[i+1][j>>1][k+7] = min(dp[i+1][j>>1][k+7],dp[i][j][k+8]);
43             else
44             {
45                 int r = INF;
46                 _for(h,0,8)
47                 if(!((j>>h)&0x1) && i+h<=r)
48                 {
49                     r = min(r,i+h+B[i+h]);
50                     if(!(i+k))
51                         dp[i][j|(1<<h)][h+8] = min(dp[i][j|(1<<h)][h+8],
52                                                    dp[i][j][k+8]);
53                     else
54                         dp[i][j|(1<<h)][h+8] = min(dp[i][j|(1<<h)][h+8],
55                                                    dp[i][j][k+8]+(T[i+k]^T[i+h]));
56                 }
57             }
58         int res = INF;
59         _for(k,0,9)
60         res = min(res,dp[n+1][0][k]);
61         write(res);
62         printf("\n");
63     }
64     return 0;
65 }

 

P2157-[SDOI2009]学校食堂

标签:putchar   char   fine   printf   name   print   amp   ace   tchar   

原文地址:https://www.cnblogs.com/Asurudo/p/11442431.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!