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. C#变量初始化问题:字段初始值无法引用非静态字段、方法或属性

    http://www.cnblogs.com/bluestorm/p/3432190.html 问题:字段初始值设定项无法引用非静态字段.方法或属性的问题 下面代码出错的原因,在类中定义的字段为什么不 ...

  2. mybatis学习(一)一个在idea下的实例

    今天总结的是mybatis,首先说mybatis是什么? MyBatis 是一个简化和实现了 Java 数据持久化层(persistence layer)的开源框架,它抽象了大量的 JDBC 冗余代 ...

  3. Pigcms中WeixinAction的简略版流程

    if $this->ali = 0; 1.new wechat() //该类存于PigCms/lib/ORG/Wechat.class.php 2.list($content,$type) = ...

  4. Java 使用反射拷贝对象一般字段值

    在<Java解惑>上面看到第八十三例--诵读困难者,要求使用非反射实现单例对象的拷贝.查阅了部分资料,先实现通过反射拷贝对象. 1. 编写需要被拷贝的对象Person package co ...

  5. 由Double类型数据到数据的格式化包java.text

    需求:Double类型数据截取操作保留两位小数 解决方案: java.text.DecimalFormat df =new java.text.DecimalFormat("#.00&quo ...

  6. Android Studio API 文档_下载与使用

    如何下载API 说明: 时间: 2016/7/9 根据百度经验步骤改编(百度经验), 但是比它更好, 亲测可用 1.1 下载API文档: 1.1.1 SDK Manager 1.1.2 1.1.3 ( ...

  7. MySQL数据库远程访问的权限

    GRANT ALL PRIVILEGES ON *.* TO 'user'@'%'IDENTIFIED BY 'passwd' WITH GRANT OPTION;

  8. supervisor---------------------------------常用

    第一个 supervisor 的启动 supervisord -c ~/supervisord.conf  这个是如果没有服务没有启动,则使用本脚本启动   进程的设置 [program:blog] ...

  9. Python调试工具-Spyder

    OS:Windows 7 关键字:Python IDE, Spyder 1.安装工具pip:https://pip.pypa.io/en/latest/installing.html 下载 get-p ...

  10. 移动前端javascript事件

    移动端事件: // 手势事件 touchstart //当手指接触屏幕时触发 touchmove //当已经接触屏幕的手指开始移动后触发 touchend //当手指离开屏幕时触发 touchcanc ...