n*m

P 和 M

P可以放人 M不行

人不能相互打到 问最多可以放多少人

#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<math.h>
#include<map> using namespace std; #define MAXN 1<<10
char z[][];
int x[];
int dp[][][];
int num[];
int cn[]; int Count(int a)
{
int ans=;
while(a>)
{
if(a&)
ans++;
a=a>>;
}
return ans;
}
int main()
{
int n,m; while(scanf("%d%d",&n,&m)!=EOF)
{
for(int i=;i<n;i++)
scanf("%s",z[i]);
memset(x,,sizeof(x));
memset(dp,-,sizeof(dp));
int cnt=;
int en=<<m;
for(int i=;i<en;i++)
if(((i&(i<<))||(i&(i<<)))==)
{
cn[cnt]=Count(i);
num[cnt++]=i;
}
for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
if(z[i][j]=='H')
x[i]|=(<<j);
} for(int i=;i<cnt;i++)
{
if(x[]&num[i])
continue;
dp[][i][]=cn[i];
} for(int i=;i<n;i++) //行
{
for(int j=;j<cnt;j++) //这行的状态
{
if(x[i]&num[j]) //不能矛盾
continue;
for(int k=;k<cnt;k++) //上一行的状态
{
if(num[j]&num[k]) //相邻两行不能同时出现1
continue;
for(int k1=;k1<cnt;k1++) //上面第二行状态
{
if(num[j]&num[k1]) //相邻两行不能同时出现1
continue;
if(dp[i-][k][k1]==-)
continue;
dp[i][j][k]=max(dp[i][j][k],dp[i-][k][k1]+cn[j]);
}
}
}
}
int ans=;
for(int i=;i<cnt;i++)
for(int j=;j<cnt;j++)
ans=max(dp[n-][i][j],ans);
printf("%d\n",ans);
}
return ;
}

炮兵阵地 POJ 1185的更多相关文章

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

    分析:先枚举出来所有的合法状态(当N=10的时候合法状态最多也就60种),用当前状态匹配上一行和上上一行的状态去匹配,看是否可以.....复杂度100*60*60*60,也可以接受. 代码如下: == ...

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

    题目链接:https://cn.vjudge.net/contest/276236#problem/B 题目大意:略  具体思路:和我的上一篇写状压dp的思路差不多,不过就是这个题相当于上一个题的升级 ...

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

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

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

    题目直达车:   POJ 1185 炮兵阵地 分析: 列( <=10 )的数据比较小, 一般会想到状压DP. Ⅰ.如果一行10全个‘P’,满足题意的状态不超过60种(可手动枚举). Ⅱ.用DFS ...

  5. POJ 1185 炮兵阵地 状压dp

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

  6. 【简●解】POJ 1185,LG P2704【炮兵阵地】

    POJ 1185,LG P2704[炮兵阵地] 状压经典入门. [传送门] POJ 1185 洛谷 P2704 [题目大意] 司令部的将军们打算在 \(N\times M\) 的网格地图上部署他们的炮 ...

  7. POJ 1185 炮兵阵地(动态规划+状态压缩)

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

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

    题目链接 POJ 1185 今天艾教留了一大堆线段树,表示做不动了,就补补前面的题.QAQ 这个题,我第一次写还是像前面HDU 2167那样写,发现这次影响第 i 行的还用i-2行那样,那以前的方法就 ...

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

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

随机推荐

  1. 命令行构建Unity项目

    自动任务构建 通常可以在桌面双击 Unity 图标,启动程序,但是,也可以通过命令行(例如,MacOS 终端或 Windows Command 窗口)运行程序.若使用这种方式启动 Unity,它将可以 ...

  2. Flex4 vs Flex3: Repeater vs DataGroup

    repeaters太老土了!如果你过去使用过它,你会发出这种感概.现在,我们终于要摆脱它了.Repeaters不仅有沉重的组件,而且接合使用很不方便.那么,Flex 4中有什么可以帮助我们吗?Data ...

  3. qau-国庆七天乐——B

      B - Bull Math   Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Sub ...

  4. iOS远程推送1

    一.APNS 远程推送 1.所有的苹果设备,在联网状态下,都会与苹果服务器建立长连接. 2.长连接:就是只要联网了,就一直建立连接. 3.长连接的作用:时间校准,系统升级,查找我的iPhone. 4. ...

  5. bootstrap div 弹出与关闭

    html <div id="myModal" class="modal" tabindex="-1" role="dialo ...

  6. 虾皮工作室QQ群列表

    各位博友: 本群不仅仅是提供好的资料,更重要是提供平台,提供解决问题的方法和思路.求人不如求己,掌握合理的方法和方式才是不断进步的根本.看我的文档,不单单是看内容,更应该从整理的方式和角度是深思,去想 ...

  7. 中晟银泰国际中心酒店式公寓介绍 业主交流QQ群:319843248

    行政区域:中原区 区域板块:西北板块 项目位置:中原路与华山路东北角(中原万达北侧中原西路对面) 建筑类型:高层 物业类别:酒店式公寓 户型面积:公寓35-100平米 开发商:中晟集团 投资商:中晟集 ...

  8. Common Issues Which Cause Roles to Recycle

    This section lists some of the common causes of deployment problems, and offers troubleshooting tips ...

  9. 后缀树(BZOJ3238TLE)

    #include<cstdio> #include<cstring> #define LL long long ],stt[]; LL ans; ,sidcnt,lastcre ...

  10. 用SpringMvc实现Excel导出功能

    以前只知道用poi导出Excel,最近用了SpringMvc的Excel导出功能,结合jxl和poi实现,的确比只用Poi好,两种实现方式如下: 一.结合jxl实现: 1.引入jxl的所需jar包: ...