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

刚开始思路就错了 想着用保存这一行的状态 然后再去枚举前面两行的状态 这样不能保证前面两行的状态同时满足要求

正解:保存两行的状态 再依次枚举前面的

各种小错误不断啊 改的一个纠结。。

 #include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
using namespace std;
char c;
int p[],o[],dp[][][],f[],x[];
int main()
{
int i,j,n,m,e,a,k,g;
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(p,,sizeof(p));
memset(f,,sizeof(f));
memset(o,,sizeof(o));
p[] = ;
for(i = ; i <= ; i++)
p[i] = p[i-]*;
for(i = ; i < n ; i++)
{
getchar();
for(j = ; j < m ; j++)
{
scanf("%c",&c);
if(c=='P')
f[i]+=p[j];
}
}
memset(dp,,sizeof(dp));
k = ;
for(i = ; i < <<m ; i++)
{
if((i&(i<<)))
continue;
if((i&(i>>)))
continue;
if((i&(i>>)))
continue;
if((i&(i<<)))
continue;
for(e = ; e < m ; e++)
if((i&(<<e))!=)
o[i]++;
k++;
x[k] = i;
}
for(i = ; i <= k ;i++)
if((x[i]&(f[]))==x[i])
{
for(j = ; j <= k ; j++)
if((x[j]&(f[]))==x[j]&&(x[i]&x[j])==)
dp[][i][j] = o[x[i]]+o[x[j]];
}
for(i = ; i < n ; i++)
{
for(j = ; j <= k ;j++)
{
if((x[j]&f[i])!=x[j])
continue;
for(g = ; g <= k ; g++)
{
if(x[g]&x[j])
continue;
if((x[g]&(f[i-]))!=x[g])
continue;
for(a = ; a <= k ; a++)
{
if((x[a]&(f[i-]))!=x[a])
continue;
if(x[a]&x[j])
continue;
dp[i%][j][g] = max(dp[i%][j][g],dp[(i-)%][g][a]+o[x[j]]);
}
}
}
}
int ans=;
if(n==)
{
for(i = ; i <= k ; i++)
if((f[]&x[i])==x[i])
ans = max(o[x[i]],ans);
}
else
{
for( i =; i <= k ; i++)
for(j = ; j <= k ; j++)
ans = max(ans,dp[(n-)%][i][j]);
}
printf("%d\n",ans);
}
return ;
}
/*
14 10
PPPPPPPPPP
PPPPPPPPPP
HHHHHHHHHH
PPPPPPPPPP
HHHHHHHHHH
HHHHHHHHHH
PPPPPPPPPP
PPPPPPPPPP
PPPPPPPPPP
HHHHHHHHHH
PPPPPPPPPP
HHHHHHHHHH
HHHHHHHHHH
PPPPPPPPPP
*/
/*
3 4
PHPP
PPHH
PPPP
*/

poj炮兵阵地(状压)(25+10+20=55)的更多相关文章

  1. POJ 1185 炮兵阵地 状压dp

    题目链接: http://poj.org/problem?id=1185 炮兵阵地 Time Limit: 2000MS Memory Limit: 65536K 问题描述 司令部的将军们打算在N*M ...

  2. poj - 1185 炮兵阵地 状压DP 解题报告

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

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

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

  4. TZOJ 4912 炮兵阵地(状压dp)

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

  5. 洛谷P2704 [NOI2001]炮兵阵地 [状压DP]

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

  6. [NOI2001]炮兵阵地 状压DP

    题面: 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队.一个N*M的地图由N行M列组成,地图的每一格可能是山地(用“H” 表示),也可能是平原(用“P”表示),如下图.在每一格平原地形上最多 ...

  7. [POJ1185][NOI2001]炮兵阵地 状压DP

    题目链接:http://poj.org/problem?id=1185 很裸的状压,考虑对于一行用二进制储存每一种的状态,但是状态太多了做不了. 观察到有很多状态都是不合法的,于是我们预处理出合法的状 ...

  8. P2704 [NOI2001]炮兵阵地 (状压DP)

    题目: P2704 [NOI2001]炮兵阵地 解析: 和互不侵犯一样 就是多了一格 用\(f[i][j][k]\)表示第i行,上一行状态为\(j\),上上行状态为\(k\)的最多的可以放的炮兵 发现 ...

  9. 炮兵阵地 /// 状压DP oj26314

    题目大意: 炮兵阵地 设置炮兵的位置 其上两位 下两位 左两位 右两位 不能同时设置炮兵 这题是 corn fields玉米地 的升级版 可以先看下这题的注释 更详细些 第一种方法是网上大多数题解的解 ...

  10. luogu 2704 炮兵阵地 状压dp

    状压的基础题吧 第一次看感觉难上天,后来嘛就.. 套路:先根据自身状态筛出可行状态,再根据地图等其他限制条件筛选适合的状态加入答案 f i,j,k 分别代表 行数,本行状态,上行状态,再累加答案即可 ...

随机推荐

  1. iOS开发——企业证书(免审核 299$)

    (最近准备考试……空闲截图整理成博客)

  2. IOS 高级开发 KVC(二)

    前一篇博客最后介绍了KVC 再json 转模型时遇到一些问题.今天接着来介绍KVC 的其他用法.其实我们在一开始的时候就一直再强调命名的重要性.命名规范是KVC 存活的基础.如果没有这个条件支撑,那么 ...

  3. 我的VIM.rc

    我的VIM.rc """""""""""""""& ...

  4. Struts2文件上传方式与上传失败解决方式

    首先将几个对象弄出来第一个 上传页面第二个 上传action第三个 startut2配置文件 我的文字描述不是很好,但是终归是自己写出来的,后来我在网上看到一篇关于文件上传描述的非常清楚的文章, 链接 ...

  5. [可拖动DIV]刚开通博客顺便就写了点东西!

    说说我自己的思路 首先需要一个初始div div { border: 1px #333 solid; width: 200px; height: 50px; } <div id="od ...

  6. Linux下的ntp时钟同步问题

    前段时间,项目中有个需求,需要将linux和windows的时间进行同步,网上也有很多类似时钟同步的帖子,大致类似:不过本次的linux的机器有点特殊,没有service命令,而且要求在另一台suse ...

  7. DataNavigator之分页

    前言 做客户端也有两个月了,先前做列表都没有分页,可能考虑数据也不是很多,昨天做了一个页面,考虑到了数据的问题,所以改为分页查询.因为也是第一次用dev,用哪个控件分页呢,还是要去搜一下,得出的事Da ...

  8. 前端资源多个产品整站一键打包&包版本管理(二)——如何在bower的配置文件加上注释

    问题: 当一个工程里面有好几个项目,每个项目引用同一个包,但是不同的名字,例如在bower中 fancybox 跟 jquery.fancybox 是一样的,我们只需要下载其中的一个版本,而打包工作不 ...

  9. Python 基础篇:字符编码、函数

    字符编码 在python2默认编码是ASCII, python3里默认是utf-8 unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so ...

  10. VS2013 调试卡顿

    今早好奇安装了花生壳远程控制软件.然后下午莫名的感觉到vs2013 调试特别的卡顿.会每隔1s中请求一次的那种卡顿于是卸载了花生壳控制软件,发现问题依旧.然后重启机器 ok了.果然不卡顿了. 我回忆了 ...