poj 1185 较难的状压dp

STM32F407用FSMC+DMA驱动LVGL,3.5寸屏流畅度翻倍实战(附CubeMX配置避坑) 本文详细介绍了如何在STM32F407上通过FSMC+DMA驱动LVGL,显著提升3.5寸屏的显示流畅度。从FSMC与DMA的配置原理到LVGL驱动层适配,提供了完整的优化方案和实测数据,帮助开发者解决界面卡顿问题,实现流畅度翻倍的效果。 阅读详情

在这里插入图片描述

于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;
}

第一节:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入门 vben5 快速入门。 Vben Admin 框架新出的版本V5.5.4,而之前的Vben Admin 2.x 目前已存档,仅进行重大问题修复。之前在2.x版本曾经简单完成了一版专栏文章,当时也是收获了一些好评和建议。本次决定在v5 版本基础上再完成一次前后端的搭建。希望大家继续多多支持。项目精简后,再次启动项目,执行 pnpm run dev点击登录,可以看到接口报错,现在前端请求的后端有报错,下一节处理这部分逻辑。 阅读详情

相关推荐

SAP OBYC自动过账全解析:从BSX到WRX的会计科目配置指南

本文深入解析SAP OBYC自动过账功能,从BSX到WRX的会计科目配置全流程,涵盖评估分组代码、事务码和评估类等核心概念。通过实战案例展示如何实现库存变动到财务过账的自动化流转,提升企业财务数据的准确性和效率。

weixin_29239279的博客 418

[SDOI2009]学校食堂

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

weixin_30619101的博客 181

流媒体学习之路(mediasoup)——simulcast 与 svc 简介(7)

流媒体学习之路(mediasoup)——simulcast 与 svc(7) 文章目录流媒体学习之路(mediasoup)——simulcast 与 svc(7)

qw225967的博客 7339

poj 1795 (状压DP难题

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

weixin_45539557的博客 290

冗余位技术在SAR ADC中的动态误差恢复机制解析

本文深入解析了冗余位技术在SAR ADC中的动态误差恢复机制,详细介绍了其基本概念、动态误差产生原因及冗余位的容错空间设计、时序松弛策略和数字校正算法。通过实际电路设计案例和数学建模,展示了冗余位技术如何显著提升ADC的精度和能效比,同时探讨了未来发展方向。

weixin_28335283的博客 973

含分布式电源的配电网三段式电流保护影响仿真研究

文章摘要 本文研究了分布式电源(DG)接入对配电网三段式电流保护的影响。通过在Matlab/Simulink平台搭建含同步发电机型DG的10kV配电网模型,设计了基于傅里叶算法的三段式电流保护模块(I段瞬时速断、II段限时速断、III段定时限过流)。研究分析了不同DG接入位置、容量及故障点对保护系统的影响机理。仿真结果表明,DG接入会改变故障电流特性,可能导致三种典型问题:保护范围扩大引起误动、保护灵敏度下降导致拒动,以及保护选择性丧失。该研究为含DG配电网的保护配置与整定提供了理论依据和仿真参考,对保障分

huanghm88的专栏 268

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

4、同轴3 - RRR球面并联机构运动分析与自主移动农业水果采摘机器人设计

本文研究了同轴3-RRR球面并联机构的运动学与速度分析,采用几何与数值方法进行位置分析,并利用螺旋理论简化雅可比矩阵的推导,通过ADAMS仿真验证了结果的准确性。同时提出一种新型自主移动农业水果采摘机器人设计,具备多功能末端执行器、水果软管转移系统和配重式静态稳定性结构,旨在减少采摘损伤、提升效率。文章还探讨了该机构在机器人控制与仿真中的应用潜力,以及采摘机器人在智能化升级与多机协作方面的发展方向。

y4z5a6b7的博客 246

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

在Android中实现SIM卡的读写操作

在上述代码中,我们创建了一个PhoneStateListener的实例,并重写了onSimStateChanged方法来处理SIM卡状态改变的事件。然后,我们通过调用telephonyManager的listen方法注册了这个监听器,并指定了要监听的事件类型为SIM卡状态的改变。在上述代码中,我们调用telephonyManager的sendUssdRequest方法来发送USSD命令,并通过TelephonyManager.UssdResponseCallback来处理USSD响应和发送失败的情况。

2301_79326510的博客 923

车载软件架构 —— AUTOSAR Vector SIP包(三)

### 上一篇文章中介绍了AUTOSAR基础软件供应商Vector公司的开发工具链,本文将继续介绍Vector公司的AUTOSAR产品。 ### -> 1、Vector SIP包中的StartApplication ### -> 2、StartApplication如何开始使用

Soly_kun的博客 828

poj 2152 Fire (树形DP难题)

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

qq_36782366的博客 412

风机叶片小规模振动监测数据集--读取测试

ETH风电叶片缺陷数据集–读取测试 数据简介 提示:这里可以添加本文要记录的大概内容: 结构健康监测是保障重要机电设备、建筑设施健康的重要技术手段。 一、lvm_read包安装 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务

cnjs1994的博客 2850

状压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万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Statistics and Machine Learning Toolbox

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

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

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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 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、付费专栏及课程。

余额充值