int dp[109][161][161];
char mp[109][15];
int sta[61];//
int nn[61];
void init()
{
int tol=0, i, j;
for(i=0; i<=1024; i++)
{
int num = 0;
for(j=0; j<10; j++)
{
int x = 1<<j;
int y = 1<<(j+1);
int z = 1<<(j+2);
if(x&i)
{
if( (y&i) || (z&i) ) break;
else num++;
}
}
if(j>=10)
{
sta[tol] = i;
nn[tol++] = num;
}
}
}
bool can(int i, int state)
{
int j = 0;
while(state)
{
if( (state&1) && mp[i][j]=='H') return false;
state>>=1;
j++;
}
return true;
}
bool can1(int s1, int s2)
{
while(s1 && s2)
{
if(s1&1 && s2&1) return false;
s1>>=1;
s2>>=1;
}
return true;
}
int main()
{
int n, m, i, j, k, h;
scanf("%d%d", &n, &m);
//memset(dp, 0, sizeof(dp));
init();
for(int i=1; i<=n; i++)
scanf("%s", mp[i]);
int s = 1<<m;
for(i=1; i<=n; i++)
for(j=0; sta[j]<s; j++)
if (can(i, sta[j]))
{
for(k = 0; sta[k] < s; k++)
if(can1(sta[j], sta[k]))
{
for(h = 0; sta[h] < s; h++)
if(can1(sta[j], sta[h]))
{
dp[i][j][k] = max(dp[i][j][k], dp[i-1][k][h] + nn[j]);
}
}
}
int ans = 0;
for(j = 0; sta[j] < s; j++)
{
for(k = 0; sta[k] < s; k++)
{
ans = max(ans, dp[n][j][k]);
}
}
printf("%d\n", ans);
return 0;
}相关推荐
最简解决 Unity Error Registry configuration is invalid Unable to connect https packages.unity.cn
前言 在学习其他大佬项目的时候,大佬说项目能直接运行,然后我拉下来就报如下错误 Unity报错:[Package Manager]Error Registry configuration is invalid:Unable to connect “https://packages.unity.cn” 翻了很多博发现是 unity3d 中国增强版的原因,中国增强版屏蔽了国外自定义的插件仓库。 安装 非中国增强版后可以成功打开。 然后大家给出的解决方案都比较激进,大抵就是更换Unity版本就OK了。 当然我是觉
poj1185-状态压缩DP
状态压缩学习论文:TJU 周伟的《状态压缩》 http://wenku.baidu.com/view/070924ec102de2bd96058839.html http://poj.org/problem?id=1185第一个状态压缩DP, 留代码以后好看: 1 #include<stdio.h> 2 #include<strin...
uniapp原生安卓插件开发之路
声明: 我的功能需求:全局悬浮框,也就是在其他应用上依旧能悬浮。查遍uni文档,无法实现,甚至native.js也无法实现,无奈只能走上原生插件开发这条不归路了。(吐槽:天天写前端js,突然写了下android简直要炸,public static String啥的,var不香嘛,不过别人严谨肯定还是有别人道理的,加油吧,争取能入个门!) 本人不懂安卓开发,完全安卓小白,所以安卓方面可能表达的不是很好,安卓代码可能写的不优美,但我功能最终还是实现了。但是为了需求,能力总能被“逼”出来。有描述错误的还望指正
poj2441 poj1185 状态压缩DP
解题报告 题目 :poj1185 poj2411 通过做poj1185和poj2411,初步学习了状态压缩Dp。重点还是如何设定状态和转移,只不过这个状态会用到维压缩的表示方法,这个做的原因就是这些问题的无后效性很难满足,因此我么你需要将这个问题中能够达到的状态都列举出来,其实回头想一想,01背包的解法就是我们对物品排列向体积状态的一个压缩。 状态压缩dp更加体现了记忆化搜索与dp的紧
第三天:Python基础语法详解
Python代码规范与注释最佳实践 摘要: 本文深度解析Python缩进规则与代码结构的技术规范,包括缩进的底层原理、语法规则和错误处理。详细阐述Python注释系统,涵盖行内注释、文档字符串和类型注释等多种形式,并提供工业级代码组织方案。研究显示,良好的缩进可提升40%的代码识别速度,降低50%的认知负荷。文章还对比了Sphinx、pdoc等主流文档生成工具,给出企业级项目中的注释编写原则和模板建议,帮助开发者构建更可维护的Python代码。
aic8800出现insmod: can‘t insert ‘/lib/modules/4.9.191/aic8800_fdrv.ko‘: No such device
2、如果单独编译wifi驱动,则把CONFIG_PLATFORM_UBUNTU?= y都改为CONFIG_PLATFORM_ALLWINNER?1、如果把wifi驱动嵌入到内核编译,则在makefile中加入这一句。后面再修改对应平台的交叉编译链和内核吗路径等。
[状态压缩DP] POJ 1185
放置炮兵的上下左右两格内不可以放
15、远程操作水下航行器(ROV)的非线性控制系统设计
本文探讨了远程操作水下航行器(ROV)的非线性控制系统设计,重点介绍了多变量PID控制、改进的PD控制和滑模控制三种方法。详细阐述了各控制策略的原理、建模与仿真过程,并通过对比分析其在稳态误差、振荡、抖振及跟踪效果等方面的性能表现。文章还提出了针对不同控制方法的优化建议,并给出了选择合适控制策略的决策流程,为ROV高精度运动控制提供了系统性解决方案。
POJ1185:状态压缩dp
POJ1185 题意 只有p才可以部署部队,攻击范围是四周两格。求最多能够部署的部队个数。 题解 dp[i][j][k]表示第i行的状态为j,上一行的状态为k的方案数。 从上到下枚举每一行,进行状态压缩。判断相连三个1的个数是否≤1。 实际上每一行满足条件的状态数很少,所以可以预处理,只有60种状态。 判断这一行与上一行和上上一行是否冲突。如果状态i和j满足i & j = 1,...
Linux内核进程管理子系统有什么第五十一回 —— 进程主结构详解(47)
Linux内核进程管理子系统有什么第五十一回 —— 进程主结构详解(47)
Golang内存管理:GC调优实战案例
在Golang编程中,内存管理是一个非常重要的方面。良好的内存管理可以提高程序的性能和稳定性,而GC(垃圾回收)调优则是优化内存管理的关键手段。本文的目的就是通过实际案例,深入讲解Golang中GC调优的方法和技巧,让读者能够在实际项目中更好地进行内存管理和性能优化。范围涵盖了从核心概念的解释到具体代码实现和调优过程的详细分析。本文首先会介绍一些相关的术语和核心概念,让读者对Golang内存管理和GC有一个基本的认识。然后通过故事引入的方式,更加形象地解释核心概念及其相互关系。
状态压缩 -- POJ 1185 炮兵阵地【状态压缩DP】
POJ 1185 炮兵阵地 核心算法:dp状态压缩中文题分析: graph[i]存储第i行的地形,用一二进制数表示,山地对应位置为1,平地对应位置为0leg[N]中存放所有能够合法的单行安排状态,用二进制数表示,驻兵对应位置为1,不驻兵对应位置为0dp[i][j][k]表示第i行状态为j,i-1行状态为k时最多的哨兵数目,j,k均对应leg[]中状态 dp[i][cur][p1] ...
杰理JL703N的SDK内部MIDI 音色库功能使用教程
本文介绍了MIDI琴按键解码和MIDI文件解码的实现方法。MIDI琴解码通过audio_dec_midi_ctrl.c文件实现,MIDI文件(mfa格式)解码则使用audio_dec_midi_file.c。使用前需将音色文件存放在SD卡或内置flash中(需确保四字节对齐),并在download.c中配置路径。同时需在板级配置中将FLASH设置为16Mbit以解决编译问题。关键注意事项包括音色文件的文件夹结构对齐要求和MIDI数据流的正确配置。
状态压缩dp入门题 POJ 1185 炮兵阵地
POJ 1185 炮兵阵地 中文题,题意不再赘述。 解法:从题目可以知道,每一行的状态只与前两行有关。已知N < 100, M <= 10。很明显的可以把M压缩,把M中的每一个位置的状态可以用0,1表示。所以M的总状态可以用长度为M的二进制转化成的十进制数表示。计算可以发现总的合法状态并不多,因为要保证同一行的两个士兵不能相互攻击到。 求合法状态的关键代码: R...
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
IMSL CNL 7.0.0 (x86-64)Crack
IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件
poj1185 状态dp
状态dp经典题目。 这种状态dp,
LinePhone3.2.7(android端最新版本) sip客户端
SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/
poj1185 炮兵阵地(状态压缩dp)
poj1185分析自己先写了一遍,结果没有多开一维,好菜啊,对动规的理解还不是很深入,而且自己之前写的代码也很繁杂,做的时候还是多思考吧。先预处理所有情况,由dp值是不是为-1判断前一个阶段可行不可行。题目http://poj.org/problem?id=1185代码#include <cstdio> #include <cstring> #include <cmath> #include <cs
[状态压缩DP] Poj 3254, Poj 1185
状态压缩DP一般适合的题型的特征为:一个矩阵,行数较大,列数较小,每个点的状态只有两种。正好用一个整型数int来表示每行的一种状态(其实是其二进制形式,每bit的0和1表示每点的状态)。不同的是各题的状态dp的定义,状态间的限制,状态的转换方程。 第一道(Poj 3254): /** 题意:在一片M行N列的草地上(用0和1矩阵表示),1表示能放牛,0表示不能放。 在草地
poj1185 炮兵阵地 经典状态压缩dp
poj1185 炮兵阵地 经典状态压缩dp 状态dp,用二进制位来表示当前的一个状态值,只不过比上一个稍微复杂了一点,需要用三维的数组来保存当前state。 题目:在一个N*M的矩阵上布置炮兵部队,只有平原可以布置,然后每个炮兵部队都有一个攻击范围,它能够攻击到的区域:沿横向左右各两格,沿纵向上下各两格。 问:如何部署炮兵部队,在防止误伤的前提下(保证任何两支炮兵部队之间不能互相攻击,即任何...
【状态压缩DP】【POJ3254】【POJ1185】 入门题
题目直达车: POJ 1185 炮兵阵地 分析: 列( Ⅰ、如果一行10全个‘P’,满足题意的状态不超过60种(可手动枚举)。 Ⅱ、用DFS搜出所有可能表示状态的整数(二进制1表示可以放,0则不能)。 Ⅲ、对每一行的地行进行状态处理(p[i]表示第i行地形的状态),二进制‘H’转1,‘P’转0; Ⅳ、用dp[i][j][k]表示第i行,且i行状态为j,i-1行状态为k
poj 1185 状态压缩dp
题目链接:http://poj.org/problem?id=1185 第i行的状态由第I-1行和第i-2行决定 dp[i][j][k] = max(dp[i][j][k],dp[i-1][k][p]+cou[j]); 初始化第i=0行就够了,因为不会访问i-2 #include //改成c++就过原来用c的,wal#include int n,m; int sta[6
poj1185——状态压缩DP
一行的状态不仅仅与上一行有关系,而且与上一行的上一行的有关系。 那就同时记录最近2行的状态进行DP吧。。。 #include #include #include #include #include using namespace std; const int maxn = 1 << 10; int dp[110][200][200]; int map[110], m, n; vec
POJ 1185 炮兵阵地(状态压缩DP)
题目链接:POJ 1185 炮兵阵地 状压DP第二题。。摸索中。。
poj1185之状态压缩dp
炮兵阵地 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17272 Accepted: 6593 Description 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也
POJ1185状态压缩DP
难得的中文题. POJ1185http://poj.org/problem?id=1185 方法就是用DP[i][r][p]表示第i行状态为r,第i-1行状态是p时的最多个数。而这里p受到r的限制,而第i-2行状态q则受到r和p两个状态限制。状态转移方程就是: DP[i][r][p] = MAX{DP[i-1][p][q] +num[r]} 其中,p是受到r的限制...
【状态dp】poj 1185 炮兵阵地(三维dp)
poj 1185 炮兵阵地http://poj.org/problem?id=1185问题描述:给你一个n行m列的P-H矩阵,H表示不能安置炮兵,1可以安置炮兵,要求炮兵攻击管辖内不能在安置其他炮兵,问最多可安置炮兵的数目思路: 状态压缩+位运算+动态规划基本思路参考上一题http://blog.youkuaiyun.com/u012717411/article/details/488967911.注意与
poj 1185 状态DP
经典的状态DP啊,虽然也可以
6842



被折叠的 条评论
为什么被折叠?



