题目链接

题意 : 中文题不详述。

思路 :状压DP,1表示该位置放炮弹,0表示不放。dp[i][j][k],代表第 i 行的状态为k时第i-1行的状态为 j 时放置的最大炮弹数。只是注意判断的时候不要互相攻击到就可以了,还要与地形相适应。

 #include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std ; int dp[][][] ;
int sum[] ;
int sta[] ;
int mapp[] ;
char sh[][] ;
int num ;
int N,M ; int getsum(int x)
{
x=(x& 0x55555555)+((x>>)& 0x55555555);
x=(x& 0x33333333)+((x>>)& 0x33333333);
x=(x& 0x0F0F0F0F)+((x>>)& 0x0F0F0F0F);
x=(x& 0x00FF00FF)+((x>>)& 0x00FF00FF);
x=(x& 0x0000FFFF)+((x>>)& 0x0000FFFF);
return x;
}
//int getsum(int x)
//{
// int cnt = 0 ;
// while(x)
// {
// cnt ++ ;
// x &= x-1 ;
// }
// return cnt ;
//}
int main()
{
while(~scanf("%d %d",&N,&M) )
{
memset(dp,-,sizeof(dp)) ;
num = ;
for(int i = ; i <= N ; i++)
{
scanf("%s",sh[i]) ;
for(int j = ; j < M ; j++)
{
if(sh[i][j] == 'H')
mapp[i] |= ( << j) ;//把高原的地方标记一下
}
}
for(int i = ; i < ( << M) ; i++)//枚举所有可行的状态
{
if(i & (i << ) || i & (i >> ) || i & (i << ) || i & (i >> ))
continue ;
// cout<<i<<" ";
sum[num] = getsum(i) ;//求i状态中1的个数
sta[num++] = i ;//将该状态存到数组中
}
// cout<<endl;
for(int i = ; i < num ; i++)
{
if(sta[i] & mapp[]) continue ;
dp[][][i] = sum[i] ;
}
for(int i = ; i <= N ; i++)
{
for(int k = ;k < num ; k++)
{
if(mapp[i] & sta[k]) continue ;
for(int j = ; j < num ; j++)
{
if(sta[j] & sta[k]) continue ;
for(int h = ; h < num ; h++)
{
if(sta[h] & sta[k]) continue ;
if(sta[h] & sta[j]) continue ;
if(dp[i-][h][j] != -)
{
dp[i][j][k] = max(dp[i][j][k],dp[i-][h][j]+sum[k]) ;
}
}
}
}
}
int ans = ;
for(int j = ; j < num ; j++)
{
for(int k = ; k < num ; k++)
ans = max(ans,dp[N][j][k]) ;
}
printf("%d\n",ans) ;
}
return ;
}

POJ 1185 炮兵阵地 (状压DP)的更多相关文章

  1. POJ 1185 炮兵阵地 状压dp

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

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

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

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

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

  4. [poj 1185] 炮兵阵地 状压dp 位运算

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

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

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

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

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

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

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

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

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

  9. luogu 2704 炮兵阵地 状压dp

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

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

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

随机推荐

  1. memcached 高级机制(二)

    memcached删除机制 a) (1)有内存机制里说明了,这里会运用到LRU删除机制.我们知道,当我们在add或set一个值时,我们会设置这个值得期限.当某个值过期后,这个值并没有从内存中删除,我们 ...

  2. [转]va_start和va_end使用详解

    转载地址:http://www.cnblogs.com/hanyonglu/archive/2011/05/07/2039916.html  本文主要介绍va_start和va_end的使用及原理. ...

  3. 微软职位内部推荐-Senior Software Engineer-Office Incubation

    微软近期Open的职位: Office China team is looking for experienced engineers to improve consumer experience i ...

  4. 受限玻尔兹曼机RBM—简易详解

  5. 关于Liferay所有的能够进行自定义和扩展的东西的总结

    非常超级什么有用的东西,amazing. 虽然不是宝宝写的. Fantastic Extension Points - And Where to Find Them

  6. 解释型语言和编译型语言如何交互?以lua和c为例

    转自http://my.oschina.net/mayqlzu/blog/113528 问题: 最近lua很火,因为<愤怒的小鸟>使用了lua,ios上有lua解释器?它是怎么嵌入大ios ...

  7. UIKit 框架之UISearchController

    // // tableViewController.m // searchController // // Created by City--Online on 15/6/1. // Copyrigh ...

  8. sql语句not in判断条件注意事项

    sql语句not in判断条件注意事项 问题描述:mysql数据库,存在两个表org表和kdorg表,用于存储组织信息.现在我需要从org表找出组织,条件为该组织不在kdorg表里. sql语句:se ...

  9. hibernate--联合主键(了解+,掌握-)

    如果一个表有多个主键(= =一般比较少) 8.4. 组件作为联合标识符(Components as composite identifiers) 先定义一个类OrderLineId (实现接口,imp ...

  10. Poj 2349 Arctic Network 分类: Brush Mode 2014-07-20 09:31 93人阅读 评论(0) 收藏

    Arctic Network Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9557   Accepted: 3187 De ...