中文题 题意不再赘述

对于中间这个“P” 根据dp的无后效性 我们只需考虑前面的

就变成了 只需考虑:

也就是状压前两行

具体与HDOJ的4539类似: 看HDOJ 4539

仅仅是共存状态的判断不同

 //#include <bits/stdc++.h>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long LL; int dp[][][], mp[][];
int pos[], d;
int main()
{
int d=;
for(int i=;i<(<<);i++)
if(!(i&(i<<)) && !(i&(i<<)))
pos[d++]=i;// 预处理 一行 符合条件的
int n, m;
while(~scanf("%d%d", &n, &m))
{
int ans=;
memset(mp, , sizeof(mp));
for(int i=;i<=n;i++)
for(int j=;j<m;j++)
{
char c;
cin>>c;
mp[i][j]=(c=='P');
}
memset(dp, , sizeof(dp));
for(int i=;i<=n;i++)//枚举n行
for(int j=;j<d && pos[j]<(<<m);j++)
{
int sum=;
for(int k=;k<m;k++)//对于当前(i,k位置)该行(前面k格)是否满足
if(pos[j]&<<k)
sum+=mp[i][k];
for(int k=;k<d && pos[k]<(<<m);k++) // 枚举i-1行的状态 看能否与第i行共存
if(!(pos[j]&pos[k]))
{
int tmp=;
for(int l=;l<d && pos[l]<(<<m);l++) // 枚举i-2行的状态 看能否与第i行、第i-1行共存
if(!(pos[j]&pos[l]))
tmp=max(tmp, dp[-i&][k][l]);
dp[i&][j][k]=tmp+sum;
ans=max(ans, dp[i&][j][k]);
}
}
printf("%d\n", ans);
}
return ;
}

POJ 1185

[状压dp]POJ1185 炮兵阵地的更多相关文章

  1. dp乱写1:状态压缩dp(状压dp)炮兵阵地

    https://www.luogu.org/problem/show?pid=2704 题意: 炮兵在地图上的摆放位子只能在平地('P') 炮兵可以攻击上下左右各两格的格子: 而高原('H')上炮兵能 ...

  2. 状压DP之炮兵阵地

    题目 原题来自:\(NOI 2001\) 司令部的将军们打算在\(N*M\) 的网格地图上部署他们的炮兵部队.一个\(N*M\)的地图由\(N\)行\(M\)列组成,地图的每一格可能是山地(用 H表示 ...

  3. 状压DP初识~~炮兵阵地

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

  4. [poj1185]炮兵阵地_状压dp

    炮兵阵地 poj-1185 题目大意:给出n列m行,在其中添加炮兵,问最多能加的炮兵数. 注释:n<=100,m<=10.然后只能在平原的地方建立炮兵. 想法:第2到状压dp,++.这题显 ...

  5. POJ1185 炮兵阵地 —— 状压DP

    题目链接:http://poj.org/problem?id=1185 炮兵阵地 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions ...

  6. 【POJ1185】炮兵阵地(状压DP)

    题意: 思路:状压DP经典题 可以预处理下每一行内合法的状态,发现很少 所以转移时可以使用状态的编号而不是状态本身 DP时记录前两行状态的编号进行转移和判断 #include<cstdio> ...

  7. poj1185:炮兵阵地(状压dp)

    也算是比较基础的状压dp了,跟做过的第二道比较又稍微复杂了一点 需要记录之前两行的状态.. 统计结果也稍有不同 另外还学习了一个得到一个整数二进制位 1 的个数的位运算方法 详见代码: #includ ...

  8. 2018.09.08 poj1185 炮兵阵地(状压dp)

    传送门 状压dp经典题. 我们把每一行的状态压成01串. 预处理出每一行可能出现的状态,然后转移每个被压缩的状态的1的个数就行了. 注意当前行转移要考虑前两行的状态. 还要注意只有一行的情况. 代码: ...

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

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

随机推荐

  1. DEDECMS 获取当前栏目及所有子栏目的文章数量

    因DEDEV5起,加强了对SQL注入和安全的检查,导致无法查询一些正常的子查询的SQL. 以下代码用来解决查询当前栏目及当前栏目下所有子栏目的文章总数,添加到/include/common.func. ...

  2. 关于async和await的一些误区实例详解

    转载自 http://www.jb51.net/article/53399.htm 这篇文章主要介绍了关于async和await的一些误区实例详解,有助于更加深入的理解C#程序设计,需要的朋友可以参考 ...

  3. nginx 错误日志分析 以及说明

    1.日志简介 nginx日志主要有两种:访问日志和错误日志.访问日志主要记录客户端访问nginx的每一个请求,格式可以自定义:错误日志主要记录客户端访问nginx出错时的日志,格式不支持自定义.两种日 ...

  4. 20160522--20160526----mybatis入门基础

    一.基础知识: 1.对原生态jdbc程序(单独使用jdbc开发)问题总结  2.mybatis框架原理 (掌握)  3.mybatis入门程序  4.用户的增.删.改.查  5.SqlMapConfi ...

  5. 项目开发中常用到的SQL语句

    阅读目录 循环示例 循环示例 循环示例 循环示例 1.循环示例 在前端面试中最常见的问题就是页面优化和缓存(貌似也是页面优化),被问了几次后心虚的不行,平然平时多少会用到一些,但突然问我,很难把自己知 ...

  6. 国外一些知名ASP.Net开源CMS系统

    1.Ludico Ludico是C#编写的居于ASP.NET 2.0的Portal/CMS系统.它的模块化设计是你可以按照你希望的使用或开发网站功能.它里面有高级的用户管理,一个所见即所的(WYSIW ...

  7. 导出Execel

    //请求入口 @SuppressWarnings("serial")@ParentPackage("default") //action请求@Results( ...

  8. N的N次方(高校俱乐部)

    最近一直在刷字符串和线段树,也越来越少玩高校俱乐部,无聊看到一题N的N次方的问题,脑海中各种打表就涌现出来了. 弄了不一会儿,就写完了,马上提交,但是系统好像出了问题,提示"哦哦,出了点状况 ...

  9. 九度OJ 1387 斐波那契数列

    题目地址:http://ac.jobdu.com/problem.php?pid=1387 题目描述: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项.斐波那契数列的定义 ...

  10. 解决:error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'

    在使用 deamon@deamon-H55M-S2:/usr/bin$ mysqladmin -u root -p shutdown 关闭MySQL之后试图通过: deamon@deamon-H55M ...