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

POJ 1185 炮兵阵地 状压dp

时间:2014-08-08 23:44:46      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   for   ar   div   

http://poj.org/problem?id=1185

经典题目不必多说,直接贴代码。

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 using namespace std;
 5 
 6 int n, m, cnt, size;
 7 int a[110], st[70], ct[70];
 8 char str[15];
 9 int f[110][70][70];
10 void init()
11 {
12     size = 0;
13     int maxn = 1 << m;
14     for (int i = 0; i < maxn; i++){
15         if (!(i&(i<<2)) && !(i&(i<<1))){
16             st[size] = i;
17             ct[size] = 0;
18             int tmp = i;
19             while(tmp) tmp = tmp&(tmp-1), ct[size]++;
20             size++;
21         }
22     }
23 }
24 int main()
25 {
26     scanf("%d %d", &n, &m);
27     for (int i = 1; i <= n; i++){
28         scanf("%s", str);
29         a[i] = 0;
30         for (int j = 0; j < m; j++){
31             if (str[j] == H) a[i] |= 1 << j;
32         }
33     }
34     init();
35     memset(f, 0, sizeof(f));
36     for (int j = 0; j < size; j++){
37         if (!(a[1]&st[j])) f[1][j][0] = ct[j];
38     }
39     for (int i = 2; i <= n; i++){
40         for (int j = 0; j < size; j++){
41             if (a[i]&st[j]) continue;
42             for (int k = 0; k < size; k++){
43                 if (a[i-1]&st[k]) continue;
44                 if (i == 2){
45                     if (!(st[j]&st[k]))
46                         f[i][j][k] = max(f[i][j][k], f[i-1][k][0] + ct[j]);
47                 }
48                 else for (int l = 0; l < size; l++){
49                     if (!(a[i-2]&st[l]) && !(st[j]&st[k]) && !(st[j]&st[l]) && !(st[k]&st[l]))
50                         f[i][j][k] = max(f[i][j][k], f[i-1][k][l] + ct[j]);
51                 }
52             }
53         }
54     }
55     int ans = 0;
56     for (int j = 0; j < size; j++)
57         for (int k = 0; k < size; k++)
58             ans = max(ans, f[n][j][k]);
59     printf("%d\n", ans);
60     return 0;
61 }

 

POJ 1185 炮兵阵地 状压dp,布布扣,bubuko.com

POJ 1185 炮兵阵地 状压dp

标签:style   blog   http   color   io   for   ar   div   

原文地址:http://www.cnblogs.com/james47/p/3900231.html

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