题解: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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FFmpeg 4.3 音视频-多路H265监控录放C++开发十二:在屏幕上显示多路视频播放,可以有不同的分辨率,格式和帧率。

上图是在安防领域的要求&#xff0c;一般都是一个屏幕上有显示多个摄像头捕捉到的画面&#xff0c;这一节&#xff0c;我们是从文件中读取多个文件&#xff0c;显示在屏幕上。 一 改动UI文件 这里我们要添加两个label&#xff0c;为了区分我们设置一下背景色&#xff08;这个是…

【数据集】【YOLO】【目标检测】道路垃圾识别数据集 8805 张,垃圾堆放识别数据集,YOLO垃圾识别算法实战训练教程!

数据集介绍 【数据集】道路垃圾识别、垃圾堆放识别数据集 8805 张&#xff0c;目标检测&#xff0c;包含YOLO/VOC格式标注。 数据集中包含2种分类&#xff1a;{0: garbage, 1: garbage_bag}&#xff0c;分别是普通垃圾和垃圾袋。 数据集来自国内外图片网站和视频截图&#x…

《TCP/IP网络编程》学习笔记 | Chapter 4:基于TCP的服务器端/客户端(2)

《TCP/IP网络编程》学习笔记 | Chapter 4&#xff1a;基于TCP的服务器端/客户端&#xff08;2&#xff09; 《TCP/IP网络编程》学习笔记 | Chapter 4&#xff1a;基于TCP的服务器端/客户端&#xff08;2&#xff09;回声客户端的完美实现回声客户端的问题回声客户端问题的解决方…

类加载过程详解

类的生命周期 类从被加载到虚拟机内存中开始到卸载出内存为止&#xff0c;它的整个生命周期可以简单概括为 7 个阶段&#xff1a;加载&#xff08;Loading&#xff09;、验证&#xff08;Verification&#xff09;、准备&#xff08;Preparation&#xff09;、解析&#xff08…

03-构建数据中台的三要素:方法论、组织和技术

03-构建数据中台的三要素&#xff1a;方法论、组织和技术 知道要转型&#xff0c;要建设数据中台&#xff0c;却不知咋做&#xff0c;咋办&#xff1f; 现在有很多讲“如何建设数据中台”文章&#xff0c;观点各不相同&#xff1a; 数据中台是数据建设方法论&#xff0c;按照数…

华为Mate70前瞻,鸿蒙NEXT正式版蓄势待发,国产系统迎来关键一战

Mate 70系列要来了 上个月&#xff0c;vivo、小米、OPPO、荣耀等众多智能手机制造商纷纷发布了他们的年度旗舰产品&#xff0c;手机行业内竞争异常激烈。 同时&#xff0c;华为首席执行官余承东在其个人微博上透露&#xff0c;Mate 70系列将标志着华为Mate系列手机达到前所未有…

源代码防泄密管理分享

随着信息技术的快速发展&#xff0c;软件已成为现代企业不可或缺的核心资产之一。然而&#xff0c;源代码作为软件的心脏&#xff0c;其安全性直接关系到企业的核心竞争力。为了有效防止源代码泄露&#xff0c;构建一套全面且高效的源代码安全管理体系显得尤为重要。以下是六个…

从神经元到神经网络:深度学习的进化之旅

神经元、神经网络 神经元 Neuron )&#xff0c;又名感知机( Perceptron )&#xff0c;在模型结构上与 逻辑回归 一致&#xff0c;这里以一个二维输入量的例子对其进行进一步 的解释&#xff1a; 假设模型的输 入向 量是一 维特征向 (x1,x2). 则单神 经元的模型结构 如下…

[C语言]strstr函数的使用和模拟实现

1.strstr函数的使用 char * strstr ( const char *str1, const char * str2); 返回一个指向str1中str2第一次出现的指针&#xff0c;如果str2中没有str1则返回 NULL。。 实例&#xff1a; #include <stdio.h> #include <string.h> int main() {char str[] "…

【论文速读】| RePD:通过基于检索的提示分解过程防御越狱攻击

基本信息 原文标题&#xff1a;RePD: Defending Jailbreak Attack through a Retrieval-based Prompt Decomposition Process 原文作者&#xff1a;Peiran Wang, Xiaogeng Liu, Chaowei Xiao 作者单位&#xff1a;University of Wisconsin–Madison 关键词&#xff1a;越狱…

React 前端通过组件实现 “下载 Excel模板” 和 “上传 Excel 文件读取内容生成对象数组”

文章目录 一、Excel 模板下载01、代码示例 二、Excel 文件上传01、文件展示02、示例代码03、前端样式展示04、数据结果展示 三、完整代码 本文的业务需求是建立在批量导入数据的情况下&#xff0c;普通组件只能少量导入&#xff0c;数据较多的情况都会选择 Excel 数据导入&…

基于YOLOv8 Web的安全帽佩戴识别检测系统的研究和设计,数据集+训练结果+Web源码

摘要 在工地&#xff0c;制造工厂&#xff0c;发电厂等地方&#xff0c;施工人佩戴安全帽能有效降低事故发生概率&#xff0c;在工业制造、发电等领域需要进行施工人员安全帽监测。目前大多数的 YOLO 模型还拘泥于公司、企业开发生产的具体产品中&#xff0c;大多数无编程基础…

内部知识库:优化企业培训流程的关键驱动力

在当今快速变化的商业环境中&#xff0c;企业培训的重要性日益凸显。内部知识库作为整合、管理和分享企业内部学习资源的关键工具&#xff0c;正逐步成为优化企业培训流程的核心。以下将探讨内部知识库如何通过多种功能&#xff0c;助力企业提升培训效率、质量和员工满意度。 …

TapData 发布官方性能测试报告,针对各流行数据源,在多项指标中表现拔群

近日&#xff0c;TapData 官方发布了最新的性能测试报告&#xff0c;该报告详细展示了 TapData v3.5.13 在各种数据源下的性能表现&#xff0c;包括全量同步、增量同步、读写延迟等关键性能指标。 随着企业对实时数据集成和处理能力需求的提升&#xff0c;TapData 凭借其高效、…

JDK1.5 java代码打包jar HmacSha256

文章目录 demo地址背景实现编写代码编译class文件打包 JAR 文件执行生成的 JAR 文件辅助验证方式 常见问题和解决方法常规生成jar方案maven插件idea工具 demo地址 https://github.com/xiangge-zx/HmacSha256 背景 最近接到一个需求,做一个可以用来HmacSha256加密的小工具&am…

【Python TensorFlow】进阶指南

在前文中&#xff0c;我们介绍了TensorFlow的基础知识及其在实际应用中的初步使用。现在&#xff0c;我们将进一步探讨TensorFlow的高级特性&#xff0c;包括模型优化、评估、选择、高级架构设计、模型部署、性能优化等方面的技术细节&#xff0c;帮助读者达到对TensorFlow的精…

Vue实现登录功能

一、Vue登录逻辑梳理&#xff1a; 1、登录流程&#xff1a; 用户在前端输入用户名和密码&#xff0c;点击登录按钮。 登录成功后的逻辑&#xff1a; 主要功能和流程&#xff1a; 异步函数 signInSuccess&#xff1a;这是一个异步函数&#xff0c;使用了 async 关键字&#xff…

「Mac畅玩鸿蒙与硬件26」UI互动应用篇3 - 倒计时和提醒功能实现

本篇将带领你实现一个倒计时和提醒功能的应用&#xff0c;用户可以设置倒计时时间并开始计时。当倒计时结束时&#xff0c;应用会显示提醒。该项目涉及时间控制、状态管理和用户交互&#xff0c;是学习鸿蒙应用开发的绝佳实践项目。 关键词 UI互动应用倒计时器状态管理用户交互…

(62)使用RLS自适应滤波器进行系统辨识的MATLAB仿真

文章目录 前言一、基本概念二、RLS算法原理三、RLS算法的典型应用场景四、MATLAB仿真代码五、仿真结果1.滤波器的输入信号、参考信号、输出信号、误差信号2.对未知系统进行辨识得到的系数 总结与后续 前言 RLS&#xff08;递归最小二乘&#xff09;自适应滤波器是一种用于系统…

Oracle 12C安装教程

Oracle 12c&#xff0c;全称Oracle Database 12c&#xff0c;是Oracle 11g的升级版&#xff0c;新增了很多新的特性。 Oracle 12c下载 打开Oracle的官方中文网站&#xff0c;选择相应的版本即可。 下载地址&#xff1a;http://www.oracle.com/technetwork/cn/database/enterp…