题解:P11248 [GESP202409 七级] 矩阵移动

题目传送门

题目大意

给出一个 n n n m m m 列的只包含 01? 的矩阵,你可以选择至多 x x x? 改成 1

设得分为经过的 1 的数量,求从矩阵的 ( 1 , 1 ) (1,1) (1,1) 开始,每次只能向右或向下移动,走到 ( n , m ) (n,m) (n,m) 的最大得分为多少?

思路讲解

很容易想到动态规划。

d p i , j , k dp_{i,j,k} dpi,j,k 为从 ( 1 , 1 ) (1,1) (1,1) 走到 ( i , j ) (i,j) (i,j),修改路径上 k k k?1 的最大得分, s i , j s_{i,j} si,j 为第 i i i j j j 列的字符。

我们遍历 i , j , k i,j,k i,j,k,如果 s i , j s_{i,j} si,j?,且 k > 0 k>0 k>0,则 d p i , j , k = max ⁡ ( max ⁡ ( d p i − 1 , j , k , d p i , j − 1 , k ) , 1 + max ⁡ ( d p i − 1 , j , k − 1 , d p i , j − 1 , k − 1 ) ) dp_{i,j,k}=\max(\max(dp_{i-1,j,k},dp_{i,j-1,k}),1+\max(dp_{i-1,j,k-1},dp_{i,j-1,k-1})) dpi,j,k=max(max(dpi1,j,k,dpi,j1,k),1+max(dpi1,j,k1,dpi,j1,k1)),即我们改或者不改 s i , j s_{i,j} si,j

否则 d p i , j , k = [ s i , j = 1 ] + max ⁡ ( d p i − 1 , j , k , d p i , j − 1 , k ) dp_{i,j,k}=[s_{i,j}=1]+\max(dp_{i-1,j,k},dp_{i,j-1,k}) dpi,j,k=[si,j=1]+max(dpi1,j,k,dpi,j1,k)

最终答案为 max ⁡ i = 0 i ≤ x ( d p n , m , i ) \max\limits_{i=0}^{i\le x}(dp_{n,m,i}) i=0maxix(dpn,m,i)

代码实现

#include <bits/stdc++.h>
using namespace std;
int t,n,m,x,dp[502][502][302];
string s[502];
int main(){scanf("%d",&t);while(t--){scanf("%d%d%d",&n,&m,&x);for(int i=1;i<=n;i++){cin>>s[i];s[i]=" "+s[i];}memset(dp,0,sizeof(dp));//不要忘了初始化for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)for(int k=0;k<=x;k++){dp[i][j][k]=(s[i][j]=='1')+max(dp[i-1][j][k],dp[i][j-1][k]);//先考虑不改变 s[i][j] 的情况if(k>0 && s[i][j]=='?')dp[i][j][k]=max(dp[i][j][k],1+max(dp[i-1][j][k-1],dp[i][j-1][k-1]));//考虑改变 s[i][j] 的情况}int ans=0;for(int i=0;i<=x;i++)ans=max(ans,dp[n][m][i]);//求最大值printf("%d\n",ans);}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/885172.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Webpack性能优化指南:从构建到部署的全方位策略

文章目录 1、webpack的优化-OneOf2、webpack的优化-Include/Exclude3、webpack优化-SourceMap4、webpack的优化-Babel缓存5、wenbpack的优化-resolve配置6、构建结果分析 webpack优化在现代前端开发中&#xff0c;Webpack已成为模块打包器的事实标准&#xff0c;它通过将项目中…

[ DOS 命令基础 4 ] DOS 命令命令详解-端口进程相关命令

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

飞书API-获取tenant_access_token

1.在飞书工作台创建应用&#xff0c;跳到开发者后台&#xff0c;选创建企业自建应用 2.设置并发布应用 必须要发布应用才可以开始使用了&#xff01;&#xff01;&#xff01; 3.调用获取token的API 参考链接&#xff1a; 开发文档 - 飞书开放平台https://open.feishu.cn/do…

linux 安装anaconda3

1.下载 使用repo镜像网址下载对应安装包 右击获取下载地址&#xff0c;使用终端下载 wget https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-x86_64.sh2.安装 使用以下命令可直接指定位置 bash Anaconda3-2024.02-1-Linux-x86_64.sh -b -p /home/anaconda3也…

LabVIEW编程过程中为什么会出现bug?

在LabVIEW编程过程中&#xff0c;Bug的产生往往源自多方面原因。以下从具体的案例角度分析一些常见的Bug成因和调试方法&#xff0c;以便更好地理解和预防这些问题。 ​ 1. 数据流错误 案例&#xff1a;在一个LabVIEW程序中&#xff0c;多个计算节点依赖相同的输入数据&#…

【自用】fastapi 学习记录 --请求和参数部分

fastai个人学习笔记 一、模块化结构框架 设置了默认请求头shop之后就无需再app0x里接口函数前全部写上/shop/xxx&#xff0c;或者/user/xxx&#xff0c;他会同意添加~如果都写了就会出现以下的情况&#xff08;重复shop&#xff09;&#xff1a; 二、请求与响应 关于参数&a…

若依入门案例

若依&#xff08;RuoYi&#xff09;框架是一个基于Java的开源企业级快速开发框架&#xff0c;主要用于构建信息管理系统。它结合了多种前端和后端技术&#xff0c;提供了高效的开发工具&#xff0c;并具备以下主要功能&#xff1a; 一、后端功能 技术选型&#xff1a;若依后端…

【Web前端】OOP编程范式

面向对象编程&#xff08;Object-Oriented Programming&#xff0c;简称 OOP&#xff09;是一种程序设计思想&#xff0c;它通过将程序视为一组相互作用的对象来设计程序。OOP 提出了一些重要的基本概念&#xff0c;包括类与实例、继承和封装。面向对象编程将系统视为由多个对象…

Mac解决 zsh: command not found: ll

Mac解决 zsh: command not found: ll 文章目录 Mac解决 zsh: command not found: ll解决方法 解决方法 1.打开bash_profile 配置文件vim ~/.bash_profile2.在文件中添加配置&#xff1a;alias llls -alF键盘按下 I 键进入编辑模式3. alias llls -alF添加完配置后&#xff0c;按…

JavaAPI(1)

Java的API&#xff08;1&#xff09; 一、Math的API 是一个帮助我们进行数学计算的工具类私有化构造方法&#xff0c;所有的方法都是静态的&#xff08;可以直接通过类名.调用&#xff09; 平方根&#xff1a;Math.sqrt()立方根&#xff1a;Math.cbrt() 示例&#xff1a; p…

UI界面设计入门:打造卓越用户体验

互联网的迅猛发展催生了众多相关职业&#xff0c;其中UI界面设计师成为互联网行业的关键角色之一。UI界面设计无处不在&#xff0c;影响着网站、应用程序以及其他数字平台上的按钮、菜单布局、色彩搭配和字体排版等。UI设计不仅仅是字体、色彩和导航栏的组合&#xff0c;它的意…

std::back_inserter

std::back_inserter 是 C 标准库中的一个函数模板&#xff0c;它用于创建一个插入迭代器&#xff08;insert iterator&#xff09;&#xff0c;这个迭代器可以在容器末尾插入新元素。它定义在 <iterator> 头文件中。 函数原型 template <typename Container> bac…

在 Mac 和 Windows 系统中快速部署 OceanBase

OceanBase 是一款分布式数据库&#xff0c;具备出色的性能和高扩展性&#xff0c;可以为企业用户构建稳定可靠、灵活扩展性能的数据库服务。本文以开发者们普遍熟悉的Windows 或 Mac 环境为例&#xff0c;介绍如何快速上手并体验OceanBase。 一、环境准备 1. 硬件准备 OceanB…

如何有效销售和应用低代码软件?探索其市场机会与策略

随着技术的进步&#xff0c;企业对自动化和数字化的需求日益增加。低代码开发平台应运而生&#xff0c;成为企业实现快速应用程序开发的重要工具。然而&#xff0c;在市场上推广和应用低代码软件并非易事&#xff0c;需要深入了解客户需求&#xff0c;提供定制化的解决方案&…

在函数内部定义函数

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 在函数内部定义函数 在以下代码片段中&#xff0c;输出的结果是什么&#xff1f; def outer_function(x): def inner_function(y): return x y return inner_function add_five outer_func…

ffmpeg命令

1. 修改视频的数据速率 ffmpeg.exe -i video.mp4 -r 30 -c:v libx264 -b:v 1500k output.mp42. mp4与h264互相转换 ffmpeg.exe -i a.mp4 -vcodec h264 output.h264 ffmpeg.exe -i output.h264 -vcodec mpeg4 output.mp4

LabVIEW气体检测系统

随着工业化进程的加速&#xff0c;环境污染问题愈加严峻&#xff0c;尤其是有害气体的排放对人类生存环境构成了严重威胁。为了更好地监测这些有害气体&#xff0c;开发一个高效、准确且易于操作的气体检测系统显得尤为重要。LabVIEW软件开发的气体检测系统&#xff0c;采用激光…

【Zookeeper集群搭建】安装zookeeper、zookeeper集群配置、zookeeper启动与关闭、zookeeper的shell命令操作

目录 一、安装Zookeeper 二、配置Zookeeper集群 三、Zookeeper服务的启动与关闭 四、Zookeeper的shell操作 前情提要&#xff1a;延续上篇【Hadoop和Hbase集群配置】继续配置Zookeeper&#xff0c;开启三台虚拟机Hadoop1、Hadoop2、Hadoop3&#xff0c;进入终端&#xff0c…

Golang | Leetcode Golang题解之第547题身份数量

题目&#xff1a; 题解&#xff1a; func findCircleNum(isConnected [][]int) (ans int) {n : len(isConnected)parent : make([]int, n)for i : range parent {parent[i] i}var find func(int) intfind func(x int) int {if parent[x] ! x {parent[x] find(parent[x])}re…

Ardusub中添加自定义控制器

1.建议保留原程序 复制ardupilot文件夹到当前目录&#xff0c;命名为ardupilot_ARDC cp -r ardupilot ardupilot_copy2.切换Sub-4.5版本 Sub-4.1版本libraries里没有AC_CustomControl文件夹&#xff0c;我们需要用到这个文件夹所以需要进行切换分支&#xff0c;在当前ardupi…