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. (转)linux下mysql的安装过程

    最近在linux安装了mysql,根据网上收集的资料和个人的操作过程,大概做了个整理,以便以后进行参考回顾. 1.下载mysql-5.1.36.tar.gz,并且解压. tar -xzvf mysql ...

  2. Java实战之03Spring-05Spring中的事务控制(基于AOP)

    五.Spring中的事务控制(基于AOP) 1.Spring中事务有关的接口 1.1.明确: JavaEE体系进行分层开发,事务处理位于业务层,Spring提供了分层设计业务层的事务处理解决方案 1. ...

  3. eclipse导入包的快捷键

    在Eclipse里,写一个没有导入相应包的类名(这个类名已经完全写全,比如LayoutManager), 可以用ctrl+shift+M/Ctrl+Shift+o/Ctrl+1导入相应的包. 其中Ct ...

  4. Codevs 3289 花匠 2013年NOIP全国联赛提高组

    3289 花匠 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 花匠栋栋种了一排花,每株花都 ...

  5. 避免ajax请求过多,导致内存溢出,请求之后回收资源

    php试题网 http://phpshiti.com/ http://www.jb51.net/article/30458.htm success: function (data, textStatu ...

  6. SSD论文优秀句子

    1. Nonvolatile memory(e.g., Phase Change Memory) blurs the boundary between memory and storage and i ...

  7. err: exp-00056 rra-12154 exp-00000

    一直用的是win7系统+oracle11g r1 server端(后简称r1). 由于工作需要装了oracle11g r2 client端(后简称r2). 在装r2之前,r1的导出exp是没有问题的. ...

  8. 关于window.location不跳转的问题

    今天在码代码的时候遇到个问题:html里采用onclick事件来实现window.location = url的跳转,在内嵌元素上又加上了href="javascrit:;"的属性 ...

  9. Codeforces Round #334 (Div. 1) C. Lieges of Legendre

    Lieges of Legendre 题意:有n堆牛,每堆有ai头牛.两个人玩一个游戏,游戏规则为: <1>从任意一个非空的堆中移走一头牛: <2>将偶数堆2*x变成k堆,每堆 ...

  10. extern "C"的作用

    一.概述 在C语言的头文件中,经常可以看到如下的代码,那这个是什么作用呢? #ifdef __cplusplus extern "C" { #endif /*...*/ #ifde ...