poj 1185 较难的状压dp

[关系图谱] 二.Gephi导入共线矩阵构建作者关系图谱 本文主要讲解Gephi绘制作者间的关系图谱,该软件可以广泛应用于社交网络、知识图谱分析,推荐读者使用。这是非常基础的一篇文章,重点讲解Gephi使用方法,希望对大家有所帮助。 阅读详情

在这里插入图片描述

于6月12日更新了代码,现在代码更加容易修改,更适合作为模板。

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

#define INF 0x3f3f3f3f
#define IMAX 2147483646
#define LINF 0x3f3f3f3f3f3f3f3f
#define ll long long
#define ull unsigned long long
#define uint unsigned int

using namespace std;
#include <cstdio>
#include <iostream>
#include <iomanip>
#include <string>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <set>
#include <vector>
#include <map>
#include <algorithm>
#include <cmath>
#include <stack>

#define INF 0x3f3f3f3f
#define IMAX 2147483646
#define LINF 0x3f3f3f3f3f3f3f3f
#define ll long long
#define ull unsigned long long
#define uint unsigned int

using namespace std;

const int p[] = { 1,3,9,27,81,243,729,2187,6561,19683,59049 };

int n, m, f[111][59049 + 5], v[11];
char mp[111][11];

void mark(int last, int x) {
	for (int i = 1; i <= m; i++, last /= 3) {
		if (last % 3 == 2)v[i] = 1;
		else if (last % 3 == 1) v[i] = 0;
		else v[i] = 2;
		if (mp[x][i] == 'H'&&v[i] == 2)v[i] = 0;
	}
}

void dfs(int x, int i, int last, int now, int cnt) {
	if (i > m) {
		f[x + 1][now] = max(f[x + 1][now], f[x][last] + cnt);
		return;
	}

	if (v[i] == 2) {
		int v1 = v[i + 1], v2 = v[i + 2];
		if (v[i + 1] == 2)v[i + 1] = 0;
		if (v[i + 2] == 2)v[i + 2] = 0;
		dfs(x, i + 3, last,
			now + v[i] * p[i - 1] + v[i + 1] * p[i] + v[i + 2] * p[i + 1], cnt + 1);
		//为什么是p[i-1]而不是m-i呢?因为第i位对应的是pow(3,i-1);
		v[i + 1] = v1, v[i + 2] = v2;
		dfs(x, i + 1, last, now, cnt);
	}
	else if (v[i] == 1)
		dfs(x, i + 1, last, now + p[i - 1], cnt);
	else
		dfs(x, i + 1, last, now, cnt);
}

int main() {
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= n; i++)
		scanf("%s", mp[i] + 1);
	memset(f, -INF, sizeof(f));
	f[0][0] = 0;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < 59049; j++) {
			if (f[i][j] < 0)continue;
			mark(j, i + 1);
			dfs(i, 1, j, 0, 0);
		}
	}
	int ans = 0;
	for (int i = 0; i < p[m]; i++)
		ans = max(ans, f[n][i]);
	printf("%d\n", ans);

	return 0;
}

华为面试手撕真题【最长不重复子串】 给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。 阅读详情

相关推荐

OpenVINS实战指南:从环境搭建到RGB-D相机实时建图

本文提供了一份详细的OpenVINS实战指南,涵盖从Ubuntu与ROS环境搭建、依赖安装与编译调试,到连接RGB-D相机进行实时建图的完整流程。重点解决了RealSense D435i等设备的驱动配置、话题对齐及常见问题,并分享了传感器标定与性能优化技巧,帮助开发者快速实现稳定高效的视觉惯性里程计系统。

weixin_29201313的博客 483

[SDOI2009]学校食堂

题目描述 小F 的学校在城市的一个偏僻角落,所有学生都只好在学校吃饭。学校有一个食堂,虽然简陋,但食堂大厨总能做出让同学们满意的菜肴。当然,不同的人口味也不一定相同,但每个人的口味都可以用一个非负整数表示。 由于人手不够,食堂每次只能为一个人做菜。做每道菜所需的时间是和前一道菜有关的,若前一道菜的对应的口味是a,这一道为b,则做这道菜所需的时间为(a or b)-(a and b),而...

weixin_30619101的博客 181

黑马程序员Pink的javaScript课程APIday4

本文摘要:介绍了JavaScript中日期对象的实例化方法(有参/无参)及三种获取时间戳的方式。讲解了DOM节点操作,包括节点查找(父、子、兄弟节点)、增加/克隆/删除节点的方法。详细说明了移动端touch事件和Swiper插件的使用,包括自动播放和小圆点配置。最后提及学成在线案例中表单验证和取消默认跳转的实现。

JLY19970726的博客 825

poj 1795 (状压DP难题

题意: 给你n个字符串,让你构造长度最小下覆盖所有字符串的最小字典序的一个字符串 思路: 完全没有思路的一道题,看着别人的题解写的,不知道如何转移,其实我们发现,构造这个字符串的过程,是将一系列字符串拼接起来的过程,所以我们只需要确定拼接好的第一个或者最后一个字符串,就可以覆盖所有的状态维度(老套路,又忘了该打),为了方便最小字典序的构造,dp[i][s]表示首个字符串是i,状态是s的最短长度,dp[j][s|(1<<j)]=dp[i][s]+cost[j][i],我们先把彼此包含的字符串排序去

weixin_45539557的博客 290

FA 新增资产API Demo

DECLARE l_trans_rec fa_api_types.trans_rec_type; l_dist_trans_rec fa_api_types.trans_rec_type; l_asset_hdr_rec fa_api_types.asset_hdr_rec_type; l_asset_desc_rec fa_a

chosen1brain的专栏 2142

保姆级教程:在Windows上用Python+OpenCV调用海康工业相机(附MVS配置避坑指南)

本文提供了一份详细的Windows环境下使用Python和OpenCV调用海康工业相机的保姆级教程,涵盖MVS配置避坑、相机连接、图像获取与格式转换等关键步骤。特别针对工业相机取流中的常见问题,如独占访问控制和多相机协同工作,提供了实用解决方案,帮助开发者快速实现稳定的图像采集系统。

weixin_29228781的博客 398

poj 1141 Brackets Sequence(区间DP,求最小,输出路径,较难)

1、http://poj.org/problem?id=1141 2、题目大意 给出一个字符串,只包含()[]四种符号,添加最少的符号使得该字符串有序,跟前面做的括号的问题类似,上次是求字符串中有规律的子串的最长长度,这次是求最少添加多少字符使得有序,并且输出最终有序的字符串来 dp[i][j]表示i到j区间内字符有序添加的最小值, if(s[i]==s[j]) dp[i][j]=dp[i

sdjzping的专栏 749

价值微笑曲线与AI公司的位置

1. 背景介绍 1.1 问题由来 自20世纪60年代,哈佛大学商学院教授西奥多·波特提出了“价值链”理论以来,企业如何构建竞争优势成为企业经营管理领域的研究重点。随着全球化的发展和科技进步,企业竞争环境发生了深刻变化,传统价值链管理模式逐渐显现出局限性。近年来,全球竞争格局由成本竞争转向创新竞争,企业的生存

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 1095

poj 1390 较难的区间dp

网上的代码基本上都一样,都是从北大的算法课过来的。 题意:给你一个涂有颜色的方块的序列,每次你可以删除一些相同颜色并且相邻的颜色块,并获得删除数目平方的收益,现在给你一个颜色块序列,问收益最大值是多少? Sample Input 2 //表示t 9 //n 1 2 2 2 2 3 3 3 1 //表示颜色 1 1 Sample Output Case 1: 29 Case 2: 1 思路: 第一步先把方块合并成连续且颜色一样的大块,方便处理。 对于L到R区间的最优解,一般人可能会想,要么分成三截,先删除中间

Fawkess的博客 290

EMB电子机械制动系统和EHB电子液压制动系统控制功能的对比

EMB电子机械制动系统相比EHB液压制动系统具有显著优势:响应速度更快(<100ms)、控制精度更高(±2N·m)、能实现单轮独立控制,支持0.1%级制动力调节。在ABS、ESC等安全功能上表现更优,制动平顺性和NVH性能更好,同时提升能量回收效率15%-20%。特别适合智能驾驶需求,可使AEB等系统响应时间缩短50ms,紧急制动距离减少1米以上。EMB系统完美契合高阶自动驾驶对快速响应和精准控制的要求。

m0_59012156的博客 885

swl安装无法与服务器建立链接,如何解决?

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!! 备注:部分问题/疑难杂症搜集于互联网。

**My Coding Family** 2075

poj 2152 Fire (树形DP难题)

题目链接;https://vjudge.net/contest/246776#problem/C 题目大意:有n个城市,每两个城市只有一条路连接,(所以可以当成是一颗树)。现在要建设一些防火站,使每个城市都可以被覆盖。每个城市的属性是:在本城市建防火站的价钱和不在本城市建设的话,所依赖的别的防火站的最长距离。然后是n-1条路,和这条路的长度。现在问在覆盖所有城市的前提下的最少价格。 题目思路:...

qq_36782366的博客 412

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

状压DP学习总结 (详解,适合没状压dp基础的人学习,还在更新中,,,,)

本次博客,主要是给学弟学妹们讲解一下状压dp,不适合有基础的同学观看,可能会浪费时间,因为偏基础 先来最简单的一个吧 http://acm.hdu.edu.cn/showproblem.php?pid=1565hdu 1565 方格取数(1) Time Limit: 10000/5000 MS (Java/Others)Memory Limit: 32768/32768 K (...

Amo丶 2万+

WINCC7.3破解文件

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

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

poj 1185 炮兵布阵 最详细题解(状压DP经典)

炮兵阵地 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 26796   Accepted: 10344 Description 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),

K键盘里的青春K 6506

POJ1185炮兵阵地(状压dp)

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

qq_42911793的博客 264

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

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

Chase的博客 209

POJ 1185 动态规划 状压DP 经典好题

POJ 1185 / OpenJudge 1185 状态压缩DP,经典好题。 是POJ 3254 的拓展题。首先借鉴POJ 3254的经验,我们发觉,当前的可以选择的情况和上面两行有关,所以状态必须要定义成为dp[i][U][V],表示在i行进行U的位置选取(编码为二进制),其上一行的选取是...

chuizhuanrun0253的博客 225

dp之状压

1. dp 状压  * A - Corn Fields POJ - 3254  * B - 炮兵阵地 POJ - 1185  * C - Hie with the Pie POJ - 3311  * D - Travelling HDU - 3001   * E - Islands and Bridges POJ - 2288 状压 状压目前有两种,一种比如AB就是把状态转换...

weixin_43331783的博客 542

POJ 1185 炮兵阵地(状压dp)

状压dp 状态压缩+dp。把某一个需要用0和1来表示的图看成二进制,然后转成10进制,从而把本来需要一个数组来表示的转态转换为一个数来表示。并且通过位运算优化计算速度,和dp结合起来就是状压dp。我自己的理解,应该是这样子。之前看过一篇数独的题解,那时只知道代码里全是二进制来存储情况,现在想想那好像就是状压dp了吧。 POJ 1185 炮兵阵地 司令部的将军们打算在NM的网格地图上部署他们的炮兵部...

H4ppyD0g的博客 296

POJ 1185 炮兵阵地 状压dp

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

weixin_44273380的博客 226

poj 1185(状压dp)

题目链接:http://poj.org/problem?id=1185 思路:状态压缩经典题目,dp[i][j][k]表示第i行状态为j,(i-1)行状态为k时最多可以放置的士兵个数,于是我们可以得到递推方程:dp[i][j][k]=max(dp[i][j][k],dp[i-1][k][l]+num[j]);(其中num[j]为该状态下可以放置的士兵的个数。至于具体怎么分析,这位大牛讲的很清楚:

几百个教授的专栏 353

poj1185 炮兵布阵 状压dp

题目链接:http://poj.org/problem?id=1185 题意: n∗mn*mn∗m 的矩阵, 字符PPP表示空地(能放炮台), 字符HHH表示山地(不能放炮台),每个炮台的攻击范围是它上下左右两格之内的所有格子(见题图),问最多能摆几个炮台。 题解:状压dp。 首先分析,炮台的约束条件:上下左右两格内不能有炮台。 HHH表示 1,为不能放的点,PPP表示0,能放的点。将每一行的字符...

WayJasy的博客 188

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

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

JingluoZZZ 311

[状压dp]POJ1185 炮兵阵地

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

aicheng4794的博客 139

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-3245 Corn Fields 状压dp

题目链接:POJ-3245 Corn Fields 题目 Description Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ≤ 12) square parcels. He wants to grow some yummy corn for the ...

weixin_44273380的博客 288

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 1463 简单树状dp
下一篇: cf edu 89 d 求一个数的因子和与自己互质
FawkesLi
博客等级 码龄8年 21粉丝 170原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值