POJ 1185 炮兵阵地(状压dp)

LDO和DCDC介绍 但是在一些情况下,这样的条件显然是太苛刻了,如5V转3.3V,输入与输出之间的压差只有1.7V,显然这是不满足传统线性稳压器的工作条件的。LDO即Low Dropout Regulator,是一种低压差线性稳压器。这是相对于传统的线性稳压器来说的。传统的线性稳压器,如78XX系列的芯片都要求输入电压要比输出电压至少高出2V~3V,否则就不能正常工作。针对这种情况,芯片制造商们才研发出了LDO类的电压转换芯片。 阅读详情

Language:
炮兵阵地
Time Limit: 2000MS Memory Limit: 65536K
Total Submissions: 20502 Accepted: 7944

Description

司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P"表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示: 

如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区域:沿横向左右各两格,沿纵向上下各两格。图上其它白色网格均攻击不到。从图上可见炮兵的攻击范围不受地形的影响。 
现在,将军们规划如何部署炮兵部队,在防止误伤的前提下(保证任何两支炮兵部队之间不能互相攻击,即任何一支炮兵部队都不在其他支炮兵部队的攻击范围内),在整个地图区域内最多能够摆放多少我军的炮兵部队。 

Input

第一行包含两个由空格分割开的正整数,分别表示N和M; 
接下来的N行,每一行含有连续的M个字符('P'或者'H'),中间没有空格。按顺序表示地图中每一行的数据。N <= 100;M <= 10。

Output

仅一行,包含一个整数K,表示最多能摆放的炮兵部队的数量。

Sample Input

5 4
PHPP
PPHH
PPPP
PHPP
PHHP

Sample Output

6

Source






//dp[i][j][k] 代表 第一行状态为k,第 i-1 行状态为 j 的可能数

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<set>
#include<map>


#define L(x) (x<<1)
#define R(x) (x<<1|1)
#define MID(x,y) ((x+y)>>1)

#define eps 1e-8
typedef __int64 ll;

#define fre(i,a,b)  for(i = a; i <b; i++)
#define mem(t, v)   memset ((t) , v, sizeof(t))
#define sf(n)       scanf("%d", &n)
#define sff(a,b)    scanf("%d %d", &a, &b)
#define sfff(a,b,c) scanf("%d %d %d", &a, &b, &c)
#define pf          printf
#define bug         pf("Hi\n")

using namespace std;

#define INF 0x3f3f3f3f
#define N 105

int dp[N][N][N],h[N],type[N];
int n,m,k,num[N],ans;

char a[N][N];

bool judge(int x)
{
	if(x&(x<<1)) return false;
	if(x&(x<<2)) return false;
	return true;
}

int num_count(int x)
{
	int i=0;
	while(x)
	{
		i++;
		x&=(x-1);
	}
	return i;
}

void inint()
{
	int i,j;

	int len=1<<m;
	k=0;
    fre(i,0,len)
     if(judge(i))
		type[k++]=i;                 //同一行两个炮台的可能状态

	fre(i,0,k)
	  num[i]=num_count(type[i]);     //记录第 i 中状态中的 1 的个数(放炮台)

}

void solve()
{
	int i,cur,up,uup;

	fre(i,2,n+1)
	   fre(cur,0,k)   //枚举第 i行的状态
		{
	     	 if(h[i]&type[cur]) continue;

	     	 fre(up,0,k)   //枚举第i-1行状态
	     	  {
	     	  	 if(h[i-1]&type[up]||type[cur]&type[up]) continue;

	     	  	 fre(uup,0,k)       //枚举第i-2行状态
	     	  	   {
	     	  	   	   if(h[i-2]&type[uup]||type[cur]&type[uup]||type[up]&type[uup]&&!(dp[i-1][uup][up]))
	     	  	   	     continue;

					   dp[i][up][cur]=max(dp[i][up][cur],dp[i-1][uup][up]+num[cur]);

					   if(dp[i][up][cur]>ans) ans=dp[i][up][cur];

	     	  	   }
	     	  }
		}
		pf("%d\n",ans);
}

int main()
{
	 int i,j;

	 sff(n,m);


	 fre(i,1,n+1)
	  {
	  	scanf("%s",a[i]+1);
	  }

    mem(h,0);

	 fre(i,1,n+1)
	  fre(j,1,m+1)
	   if(a[i][j]=='H')     //不能放炮的地方标记,和后面状态取 & 和如果不为0就是不可以的状态
		  h[i]|=1<<(j-1);  //好好想想为什么减一 ,非常重要

	 inint();
	 ans=0;
     mem(dp,0);

	 fre(i,0,k)
	  if(!(h[1]&type[i]))     //初始第一行
		{
		   dp[1][0][i]=num[i];
		   if(num[i]>ans) ans=num[i];
		}

	 solve();

	return 0;
}







华为OD机考双机位C卷 - AI处理器组合 (Java & Python & JS & GO & C++ & C) > 2026华为OD机试双机位C卷 - 华为OD上机考试双机位C卷 华为OD机试双机位C卷真题目录点击查看: [【全网首发】2026华为OD机位C卷 机考真题题库含考点说明以及在线OJ(OD上机考试双机位C卷)](https://blog.youkuaiyun.com/banxia_frontend/article/details/155503868) 阅读详情

相关推荐

告别实车测试:手把手教你用Vector VT平台搭建OBC/DCDC的HIL测试台架

本文详细介绍了如何利用Vector VT平台搭建新能源汽车OBC/DCDC的HIL测试台架,涵盖硬件选型、模型部署到自动化测试的全流程。通过HIL仿真测试技术,工程师可以高效验证动力域关键部件,大幅缩短开发周期并降低成本,特别适合新能源汽车三电系统的开发验证。

weixin_42659194的博客 338

LDO 芯片烫手,问题出在哪里?

在图1里,Ia = Ib = Ic,芯片U1(AMS1117-5.0)输入输出电压相差12V - 5V = 7V,此时损耗功率至少 7V × 100mA = 0.7W,这就是U1烫手的原因。BUCK电路的开关电源特点:η × 输入功率 = 输出功率,η × 12V × Ix = 5V × Iy。BUCK电路的开关电源特点:η × 输入功率 = 输出功率,η × 12V × Ix = 5V × Iy。线性电源输入输出的压差大,要注意是否会导致芯片过热,加速芯片老化,埋下质量隐患。图4:BUCK芯片效率。

Me sl ·的博客 5019

matlab snr矩阵计算公式_基于MATLAB和Adams的悬置系统解耦计算方法对比

一、概述动力总成悬置系统主要有两个作用:一是固定和支撑动力总成,限制动力总成在各种工况下的位移量,防止与其它部件碰撞;二是隔振作用,将动力总成的振动尽可能少的传递到车身。悬置系统隔振性能的核心就是解决刚体模态的频率分配和振动耦合问题,简言之就是关注动力总成的刚体模态和解耦率。动力总成悬置系统的刚体模态频率和能量解耦分析,行业内的主流计算方法分两种:一是用MATLAB编程进行分析计算,二是...

weixin_33416900的博客 1449

LDO重要参数 – 芯片热阻

LDO重要参数 – 芯片热阻

STN6554的博客 1339

SAP移动类型

SAP移动类型移动类型定义 移动类型定义

qq_20593197的博客 6201

Ubuntu24.04下Librenms的完整安装与配置指南

本文提供了在Ubuntu 24.04 LTS系统上完整安装与配置LibreNMS网络监控系统的详细指南。内容涵盖系统环境准备、依赖安装、源码获取、PHP/数据库/Nginx配置、Composer安装、网页向导设置以及设备添加与日常使用,帮助用户快速部署一套功能强大的开源网络监控解决方案。

tgb3456789的博客 1137

poj 1185

<br /> 炮兵阵地Time Limit: 2000MS Memory Limit: 65536KTotal Submissions: 9240 Accepted: 3270<br />Description司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P"表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示: <br

志当存高远 1027

Excel数字变成了小数点+E+17?这些方法帮你解决!

本文介绍了三种解决Excel中数字变成小数点+E+17问题的方法:通过下拉箭头或右键菜单设置单元格格式为文本、使用TEXT函数将科学计数法转换为文本。这些方法各有优缺点,适用于不同的场景和需求。在实际应用中,我们可以根据具体情况选择合适的方法来解决问题。通过以上方法,我们可以轻松地从繁琐的小数点+E+17问题中解脱出来,更便捷地处理Excel中的数字。希望本文能够帮助到您,让您在使用Excel时更加得心应手!

nntxthml的博客 1245

POJ 图论分类 + DP(较全 自己又加了点)

DP -----------动态规划 状态压缩DP 2411 (棋盘规模较大)状态压缩DP+DFS+滚动数组 2664 (棋盘规模较小)直接递推即可(DP) 2506 (棋盘规模较小)直接递推即可(DP+高精度) 1185 经典状态压缩,炮兵阵地 背包相关问题 3

jxy859的专栏 1875

【毕业设计】基于雷达与深度学习的摔倒检测——雷达数据集的建立

运动物体的微多普勒效应为人体动作识别提供了可能,基于雷达的居家检测具有良好的隐私保护性,且不易受环境因素影响(如光照、温度等),近年来已受到国内外学者的广泛关注。基于雷达与深度学习的摔倒检测使用自建的雷达数据集进行人体摔倒检测的研究。雷达数据集的建立分为雷达数据采集和雷达数据处理两部分工作。

洋洋Young的博客 3403

【WRFDA第一期】WRF数据同化概述及资源整理

【WRFDA第一期】WRF数据同化概述及资源整理

WW、forever的博客 1658

POJ1185炮兵阵地(状压dp)

POJ1185炮兵阵地(状压dp) 学了两周的状压dp,终于把这道题a了… 参考的这篇大佬的博客学习的状压 点这里 题意: 给一个N X M的地图,其中P代表平原能放一个炮兵,H代表一个山不能放炮兵,每个炮兵可以打到上下左右相距为2的距离。问在炮兵互不伤害的情况下地图上最多能放多少个炮兵。(N &lt;= 100,M &lt;= 10) 思路: 看到数据范围和显然这是一道状压dp的题目,首先我们把...

qq_42911793的博客 264

ABAP RAP 行为建模深入学习:从 Behavior Definition 到 Behavior Implementation 的完整实践指南

ABAP RAP开发指南:业务行为定义与实现 本文介绍SAP RAP框架中业务对象行为的开发方法: 分层设计 Behavior Definition声明业务能力(增删改查、校验、动作等) Behavior Implementation在ABAP类中编写具体逻辑 核心组件 使用BDL定义业务行为 通过FOR BEHAVIOR OF绑定行为池类(ABP) 在本地类实现校验/确定/动作逻辑 关键特性 支持managed/unmanaged两种实现模式 提供草稿表、并发控制等企业级功能 通过EML以别名访问实体 开

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 411

[poj1185]炮兵阵地_状压dp

炮兵阵地 poj-1185     题目大意:给出n列m行,在其中添加炮兵,问最多能加的炮兵数。     注释:n<=100,m<=10。然后只能在平原的地方建立炮兵。       想法:第2到状压dp,++。这题显然是很经典的。设状态dp[i][j][k]表示第i行的状态为j,i-1行的状态为k的最多炮兵数。在转移时,枚举所有的合法炮兵排列(此处的合法数目是根据一行全为平原的时...

weixin_30438813的博客 83

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

POJ 1185 炮兵阵地 (状压DP)

www.cnblogs.com/shaokele/ POJ 1185 炮兵阵地 (状压DP)   Time Limit: 2 Sec   Memory Limit: 64 MB Description   司令部的将军们打算在NM的网格地图上部署他们的炮兵部队。一个NM的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P"表示),如下图。在每一格平原地形上最多可...

weixin_30414635的博客 116

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

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

题意:POJ1185 N∗MN*MN∗M的图,HHH表示山地,PPP表示平原,山地不能布置炮兵,平原可以布置炮兵,111个炮兵影响的范围是上下左右各两个区域,问放最多能放几个炮兵。 分析: 先将读入的图转化为二进制数pic[i]pic[i]pic[i](这里111表示山地,000表示平原),因为同一行状态最多有102410241024个,而根据题目限制可行状态其实只有707070个左右,所以预处理...

Chase的博客 209

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【POJ 1185】炮兵阵地(状压DP)

【POJ 1185】炮兵阵地(状压DP) Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 23107   Accepted: 8957 Description 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格

ACMer' 1877

POJ 1185 炮兵阵地 状压dp

题目链接:POJ 1185 炮兵阵地 题目 Description 司令部的将军们打算在NM的网格地图上部署他们的炮兵部队。一个NM的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P"表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示: 如果在地图中的灰色所标识的平原上部署一支炮...

weixin_44273380的博客 226

POJ1185 炮兵阵地 —— 状压DP

题目链接:http://poj.org/problem?id=1185 炮兵阵地 Time Limit:2000MS Memory Limit:65536K Total Submissions:30608 Accepted:11828 Description 司令部的将军们打算在N*M的网格地图上部署他们的炮...

alince20008的博客 154

POJ - 1185 炮兵阵地(状压DP)

题目: 司令部的将军们打算在NM的网格地图上部署他们的炮兵部队。一个NM的地图由N行M列组成,地图的每一格可能是山地(用&quot;H&quot; 表示),也可能是平原(用&quot;P&quot;表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示: 如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区域:沿横向左...

JingluoZZZ 311

poj 1185 炮兵阵地 【状压dp】

题目链接:http://poj.org/problem?id=1185 题目大意:一个方格组成的矩阵,每个方格可以放大炮用P表示,不可以放大炮用H表示\,让放最多的大炮,大炮与大炮间不会互相攻击。 /* dp[i][j][k] 表示第i行状态为k,第i-1状态为j时的最大炮兵个数。  递归方程:dp[i][l][j]=max(dp[i][l][j],dp[i-1][k][l]+num[j])...

几许情愁的博客 225

poj 1185 炮兵阵地 状压dp

题目链接 题意 在\(N\times M\)的\(0,1\)格子上放东西,只有标记为\(1\)的格子可以放东西,且每一格的向上两个,向下两个,向左两个,向右两个格子均不能放东西。问整张图上最多能放多少东西。 思路 参考:accry. 因为每一行的状态与上两行有关,所以用\(dp[i][j][k]\)表示放到第\(i\)行,当前行的状态为\(j\),上一行的状态为\(k\)时的情况总数。 ...

ahu12345678的博客 174

[状压dp]POJ1185 炮兵阵地

中文题 题意不再赘述 对于中间这个“P” 根据dp的无后效性 我们只需考虑前面的 就变成了 只需考虑: 也就是状压前两行 具体与HDOJ的4539类似: 看HDOJ 4539 仅仅是共存状态的判断不同 1 //#include <bits/stdc++.h> 2 #include <cstdio> 3 #in...

aicheng4794的博客 139

POJ 1185——炮兵阵地【状压DP & 空间预处理优化】

题目传送门 Description 司令部的将军们打算在N * M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P"表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示: 如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色...

NIRVANA REBIRTH 379

炮兵阵地 POJ - 1185(状压DP)

G - 炮兵阵地 题目链接:POJ - 1185POJ-3254的升级版;题意:N*M的地图标有H,G, H不能建炮兵阵地, P可以,炮兵阵地之间至少要间距两个格子(POJ-3254是不能相邻);若用1表示有炮兵阵地, 0表示无, 则1001...

Sirius_han的博客 442
上一篇: POJ 3254 Corn Fields (状压)
下一篇: POJ 3311 Hie with the Pie(状压dp or dfs)
左眼皮跳跳~
博客等级 码龄13年 17粉丝 400原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值