POJ1185:火炮(减少国家)
Description

假设在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它可以攻击到的区域:沿横向左右各两格,沿纵向上下各两格。图上其他白色网格均攻击不到。
从图上可见炮兵的攻击范围不受地形的影响。
如今,将军们规划怎样部署炮兵部队,在防止误伤的前提下(保证不论什么两支炮兵部队之间不能互相攻击,即不论什么一支炮兵部队都不在其它支炮兵部队的攻击范围内),在整个地图区域内最多可以摆放多少我军的炮兵部队。
Input
接下来的N行,每一行含有连续的M个字符('P'或者'H')。中间没有空格。按顺序表示地图中每一行的数据。N <= 100;M <= 10。
Output
Sample Input
5 4
PHPP
PPHH
PPPP
PHPP
PHHP
Sample Output
6
与HDU4539基本上一样的题目,仅仅是在推断情况上有些不同而已
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std; int n,m;
char map[105][15];
int mat[105][15];
int now[1<<10],pre[1<<10],prepre[1<<10];
int l_now,l_pre,l_prepre;
int dp[1<<10][1<<10],tem[1<<10][1<<10],tt[1<<10]; void dfs(int id,int k,int p,int sum)
{
if(k>=m)
{
now[++l_now] = p;
tt[l_now] = sum;
return;
}
if(k>=2 && mat[id][k] && !(p&(1<<(k-2))) && !(p&(1<<(k-1))))
dfs(id,k+1,p|(1<<k),sum+1);
else if(k==1 && mat[id][k] && !(p&(1<<(k-1))))
dfs(id,k+1,p|(1<<k),sum+1);
else if(k == 0 && mat[id][k])
dfs(id,k+1,p|(1<<k),sum+1);
dfs(id,k+1,p,sum);
} void solve()
{
int i,j,k,t;
tem[1][1] = pre[1] = prepre[1] = 0;
l_pre = l_prepre = 1;
for(k = 0; k<n; k++)
{
l_now = 0;
dfs(k,0,0,0);
for(i = 1; i<=l_now; i++)
for(j = 1; j<=l_pre; j++)
dp[i][j] = 0;
for(i = 1; i<=l_now; i++)
for(j = 1; j<=l_pre; j++)
for(t = 1; t<=l_prepre; t++)
{
if(now[i] & prepre[t]) continue;
if(now[i] & pre[j]) continue;
if(pre[j] & prepre[t]) continue;
dp[i][j] = max(dp[i][j],tem[j][t]+tt[i]);
}
for(i = 1; i<=l_now; i++)
for(j = 1; j<=l_pre; j++)
tem[i][j] = dp[i][j];
for(i = 1; i<=l_pre; i++)
prepre[i] = pre[i];
for(i = 1; i<=l_now; i++)
pre[i] = now[i];
l_prepre = l_pre;
l_pre = l_now;
}
} int main()
{
int i,j,ans;
while(~scanf("%d%d",&n,&m))
{
for(i = 0; i<n; i++)
{
scanf("%s",map[i]);
for(j = 0; j<m; j++)
{
if(map[i][j] == 'P')
mat[i][j] = 1;
else
mat[i][j] = 0;
}
}
solve();
ans = 0;
for(i = 1; i<=l_pre; i++)
for(j = 1; j<=l_prepre; j++)
ans = max(ans,tem[i][j]);
printf("%d\n",ans);
} return 0;
}
版权声明:本文博客原创文章,博客,未经同意,不得转载。
POJ1185:火炮(减少国家)的更多相关文章
- poj 1185 火炮 (减少国家DP)
火炮 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 19690 Accepted: 7602 Description 司 ...
- hdu 4778 Rabbit Kingdom(减少国家)
题目链接:hdu 4778 Rabbit Kingdom 题目大意:Alice和Bob玩游戏,有一个炉子.能够将S个同样颜色的宝石换成一个魔法石.如今有B个包,每一个包里有若干个宝石,给出宝石的颜色. ...
- 可能性dp+减少国家HDU4336
Card Collector Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Subm ...
- poj - 1170 - Shopping Offers(减少国家dp)
意甲冠军:b(0 <= b <= 5)商品的种类,每个人都有一个标签c(1 <= c <= 999),有需要购买若干k(1 <= k <=5),有一个单价p(1 & ...
- [ACM] hdu 5045 Contest (减少国家Dp)
Contest Problem Description In the ACM International Collegiate Programming Contest, each team consi ...
- Light OJ 1406 Assassin`s Creed 减少国家DP+支撑点甚至通缩+最小路径覆盖
标题来源:problem=1406">Light OJ 1406 Assassin`s Creed 意甲冠军:向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路: ...
- HDU 4433 locker 2012 Asia Tianjin Regional Contest 减少国家DP
意甲冠军:给定的长度可达1000数的顺序,图像password像锁.可以上下滑动,同时会0-9周期. 每个操作.最多三个数字连续操作.现在给出的起始序列和靶序列,获得操作的最小数量,从起始序列与靶序列 ...
- Chapter06-Phylogenetic Trees Inherited(POJ 2414)(减少国家DP)
Phylogenetic Trees Inherited Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 480 Accepted ...
- POJ 2411 Mondriaan's Dream (dp + 减少国家)
链接:http://poj.org/problem?id=2411 题意:题目描写叙述:用1*2 的矩形通过组合拼成大矩形.求拼成指定的大矩形有几种拼法. 參考博客:http://blog.csdn. ...
随机推荐
- linux系统下安装与配置apache
搭建环境:VMware上虚拟的linux 主机:win 7 安装linux下的Apache前准备: 1.httpd服务的配置文件,默认存储路径:/etc/httpd/conf/httpd.conf( ...
- LOG4J中日志级别的使用
<logger name="demo-log" additivity="false"> <level value="${log.le ...
- jquery修改获取radio的选中项
<input id="txtBeginDate" onclick="$('#divDate').css({'top':$('#txtBeginDate').offs ...
- html5 video标签如何禁止视频下载
html5 video标签如何禁止视频下载 一.总结 一句话总结:bing方法给video对象绑定return false的匿名方法. 1.html5 video标签如何禁止视频下载? bing方法给 ...
- 关于IT增值服务"拜师学艺"价格调整的通知
经过几天的探索,在与若干潜在付费客户交流的基础上,决定对IT增值服务"拜师学艺"价格进行调整. 当前价格:年费1000元,月付100元-1年付10个月. 2015年1月1日起,年费 ...
- winxp下安装mysql5.7提示mysqld.exe不是有效的win32文件
http://bbs.csdn.net/topics/391919244 http://haohaoxuexi.iteye.com/blog/2123030
- arm-linux内存管理学习笔记(1)-内存页表的硬件原理
linux kernel集中了世界顶尖程序猿们的编程智慧,犹记操作系统课上老师讲操作系统的四大功能:进程调度 内存管理 设备驱动 网络.从事嵌入式软件开发工作,对设备驱动和网络接触的比較多. 而进程调 ...
- 5.7-GTID复制搭建
基本环境 Master Slave MySQL版本 MySQL-5.7.16-X86_64 MySQL-5.7.16-X86_64 IP 192.168.56.156 192.168.56.157 ...
- leveldb学习:Versionedit和Versionset
VersionEdit: compact过程中会有一系列改变当前Version的操作(FileNumber添加.删除input的sstable,添加输出的sstable).为了缩小version切换的 ...
- tensorflow 的使用流程
1. optimizer.minimize 与 global_step optimizer = tf.train.**(learning_rate) global_step = tf.Variable ...