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 }

转载于:https://www.cnblogs.com/james47/p/3900231.html

POJ 1185 炮兵阵地 状压dp相关推荐

  1. POJ - 1185 炮兵阵地(状压dp)

    题目链接:点击查看 题目大意:中文题,题意很清晰,不多赘述 题目分析:最基础的状压dp,需要考虑如何转移,因为每一个炸弹所涉及的范围都是上下左右两个格子,我们可以从第一行开始向下转移,这样某一行的状态 ...

  2. POJ 1185 炮兵阵地 (状压DP)

    炮兵阵地 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 14869   Accepted: 5575 Description ...

  3. 洛谷P2704 [NOI2001]炮兵阵地(状压dp)

    题目描述 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队.一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P&quo ...

  4. POJ 1185 炮兵阵地(状态压缩DP)

    Description 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队.一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用&quo ...

  5. POJ1185 炮兵阵地 状压DP

    炮兵阵地 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 31819   Accepted: 12295 Descriptio ...

  6. P2704 炮兵阵地 (状压dp入门题) 题解

    题意简述:给定一个大小为n*m的棋盘,棋盘上'H'表示不可放置,'P'表示可放置,一个棋子在棋盘上的攻击范围是其左右上下2格以内,求不冲突情况下的最多摆放棋子数. 分析:决策是对于一个P格子考虑放或不 ...

  7. 【状态dp】poj 1185 炮兵阵地(三维dp)

    poj 1185 炮兵阵地 http://poj.org/problem?id=1185 问题描述:给你一个n行m列的P-H矩阵,H表示不能安置炮兵,1可以安置炮兵,要求炮兵攻击管辖内不能在安置其他炮 ...

  8. POJ 1185 炮兵阵地 【状压DP】

    <题目链接> 题目大意: 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队.一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平 ...

  9. POJ - 3254 Corn Fields(状压dp)

    题目链接:点击查看 题目大意:给出一个n*m的地图,有些位置不能放牧,然后放牧的条件是相邻两个格子不允许同时使用,问可行方案有几种 题目分析:因为给出的数据范围很小,并且放牧的状态是放或者不放,很容易 ...

最新文章

  1. Python Qt GUI设计:QDrag拖拽数据传输类(基础篇—18)
  2. 机器人第一次独立手术!最快55分钟缝合肠道,华裔教授带队研发,“结果显著优于外科医生”...
  3. Yii 框架学习--03 多应用多模块
  4. node.js require 自动执行脚本 并生成html,利用node.js实现自动生成前端项目组件的方法详解...
  5. 计算机安装操作系统的目的是什么,安装计算机操作系统.doc
  6. android 360旋转动画,ANDROID——仿360手机卫士的旋转打分控件
  7. 四维的王坚和三维的阿里互联网汽车
  8. AJAX JSON之讲解
  9. java.io.FileNotFoundException: ...\ibs\library-1.0.17.jar (系统找不到指定的文件。)
  10. 基于vue-cli的快速开发框架
  11. 用大前端技术实现的一款仿Boss直聘app(已开源)
  12. js中去除字符串中所有的html标签
  13. 生产系统仿真软件,实现数字化工厂的利器!
  14. 中兴B860AV1.1_机顶盒_(4G和8G版)刷机固件升级和教程
  15. 大一计算机引论知识点,计算机引论知识点2015.doc
  16. AD使用技巧 内附AD18下载地址
  17. 树莓派3B+(无显示器)实现串口登录
  18. tp ajax 搜索分页
  19. 【无人机】基于fmincon实现无人机二维路径规划附matlab代码
  20. 用于生成随机数的python标准库模块是_详解Python基础random模块随机数的生成

热门文章

  1. JZOJ 5987. 【WC2019模拟2019.1.4】仙人掌毒题
  2. 适合打游戏的计算机内存品牌型号,玩游戏电脑内存要多大合适?不同内存容量玩游戏区别实测...
  3. 塞尔达 amiibo数据_塞尔达传说:旷野之息Amiibo道具制作_碧海风云
  4. 最短路上的统计(Floyd)
  5. Codeforces 1344F Piet's Palette (线性代数、高斯消元)
  6. λ-矩阵(不变因子)
  7. golang适合做什么_什么八字适合做销售 适合做销售的八字特征
  8. 公共互联网网络安全突发事件应急预案_安徽新规:发生重大突发事件,官方5小时内必须发声...
  9. HDU - 2612 Find a way(BFS搜索)
  10. 小程序中实现滚动字幕