2024年9月GESP真题及题解(C++七级): 矩阵移动

2024年9月GESP真题及题解(C++七级): 矩阵移动

题目描述

小杨有一个n × m n \times mn×m的矩阵,仅包含01?三种字符。矩阵的行从上到下编号依次为1 , 2 , … , n 1,2,\dots, n1,2,,n,列从左到右编号依次为1 , 2 , … , m 1, 2, \dots, m1,2,,m。小杨开始在矩阵的左上角( 1 , 1 ) (1,1)(1,1),小杨只能向下或者向右移动,最终到达右下角( n , m ) (n, m)(n,m)时停止,在移动的过程中每经过一个字符1得分会增加一分(包括起点和终点),经过其它字符则分数不变。小杨的初始分数为0 00分。

小杨可以将矩阵中不超过x xx个字符?变为字符1。小杨在修改矩阵后,会以最优的策略从左上角移动到右下角。他想知道自己最多能获得多少分。

输入格式

第一行包含一个正整数t tt,代表测试用例组数,接下来是t tt组测试用例。对于每组测试用例,一共n + 1 n + 1n+1行。

第一行包含三个正整数n , m , x n, m, xn,m,x,含义如题面所示。
之后n nn行,每行一个长度为m mm的仅含01?的字符串。

输出格式

对于每组测试用例,输出一行一个整数,代表最优策略下小杨的得分最多是多少。

输入输出样例 1
输入 1
2 3 3 1 000 111 01? 3 3 1 000 ?0? 01?
输出 1
4 2
说明/提示
样例 1 解释

对于第二组测试用例,将( 2 , 1 ) (2,1)(2,1)或者( 3 , 3 ) (3,3)(3,3)变为1 11均是最优策略。

数据规模与约定

子任务编号数据点占比t ttn , m n,mn,mx xx
1 1130 % 30\%30%≤ 5 \leq 55≤ 10 \le 1010= 1 =1=1
2 2230 % 30\%30%≤ 10 \le 1010≤ 500 \le 500500≤ 30 \le 3030
3 3340 % 40\%40%≤ 10 \le 1010≤ 500 \le 500500≤ 300 \le 300300

对全部的测试数据,保证1 ≤ t ≤ 10 1 \leq t \leq 101t101 ≤ n , m ≤ 500 1 \leq n,m \leq 5001n,m5001 ≤ x ≤ 300 1 \leq x \leq 3001x300,保证所有测试用例n × m n \times mn×m的总和不超过2.5 × 10 5 2.5 \times 10^52.5×105

思路分析

这是一个动态规划问题,需要在小杨从矩阵左上角到右下角的移动过程中,通过将不超过x个’?‘变为’1’来最大化得分。小杨只能向下或向右移动,每经过一个’1’(包括起点和终点)得一分。

动态规划思路

定义状态dp[i][j][k]表示从起点(1,1)走到位置(i,j),且恰好修改了k个’?'变为’1’时能够获得的最大得分。

状态转移考虑两种情况:

  1. 从上方(i-1,j)或左方(i,j-1)转移过来,不修改当前格子
  2. 如果当前格子是’?‘且还有修改次数,可以将其修改为’1’,从上方或左方转移并使用一次修改

由于小杨可以选择任意不超过x次修改,最终答案是max(dp[n][m][k])对所有0 ≤ k ≤ x

代码实现

#include<bits/stdc++.h>usingnamespacestd;// 定义最大常量,比题目限制稍大避免越界constintMAXN=502;// 最大行数constintMAXM=502;// 最大列数constintMAXX=302;// 最大修改数// dp[i][j][k]表示走到(i,j)位置,已经修改了k个'?'时的最大得分intdp[MAXN][MAXM][MAXX];string s[MAXN];// 存储矩阵,每行一个字符串intmain(){intt;// 测试用例组数cin>>t;while(t--){// 处理每组测试用例intn,m,x;// 矩阵行数、列数、最大修改次数cin>>n>>m>>x;// 读取矩阵并调整下标从1开始for(inti=1;i<=n;i++){cin>>s[i];s[i]=" "+s[i];// 在字符串前加空格,使列下标从1开始}// 初始化DP数组为0(因为得分为非负整数)memset(dp,0,sizeof(dp));// 动态规划计算所有状态for(inti=1;i<=n;i++){for(intj=1;j<=m;j++){for(intk=0;k<=x;k++){// 枚举可能的修改次数// 从上方(i-1,j)和左方(i,j-1)转移,取最大值作为前驱状态intfrom_above=dp[i-1][j][k];intfrom_left=dp[i][j-1][k];intbest_prev=max(from_above,from_left);// 情况1:不修改当前格子if(s[i][j]=='1'){// 当前格子是'1',得分加1dp[i][j][k]=max(dp[i][j][k],1+best_prev);}else{// 当前格子是'0'或'?'但不修改,得分不变dp[i][j][k]=max(dp[i][j][k],best_prev);}// 情况2:如果当前格子是'?'且还有修改次数,可以选择修改它if(k>0&&s[i][j]=='?'){// 从修改次数为k-1的状态转移intbest_prev_mod=max(dp[i-1][j][k-1],dp[i][j-1][k-1]);// 修改当前格子变为'1',得分加1dp[i][j][k]=max(dp[i][j][k],1+best_prev_mod);}}}}// 在所有可能的修改次数中寻找最大得分intans=0;for(intk=0;k<=x;k++){ans=max(ans,dp[n][m][k]);}cout<<ans<<endl;}return0;}

功能分析

1. 数据结构设计
  • 三维DP数组:dp[i][j][k]记录状态值
  • 字符串数组:存储原始矩阵,下标从1开始便于处理边界
2. 边界处理
  • 数组下标从1开始,dp[0][j][k]dp[i][0][k]自然为0(未初始化部分)
  • i=1j=1时,best_prev为0,正确处理起点
3. 状态转移逻辑
  • 对每个位置(i,j)和每种修改次数k,考虑两种决策:
    • 不修改当前格子:从上方或左方继承相同修改次数的状态
    • 修改当前格子(仅当格子为’?'且k>0):从修改次数少1的状态转移
  • 通过取max操作保证每一步都选择最优路径
4. 时间复杂度分析
  • 时间复杂度:O(t × n × m × x)
  • 空间复杂度:O(n × m × x)

各种学习资料,助力大家一站式学习和提升!!!

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}

1、csp信奥赛高频考点知识详解及案例实践:

CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转

CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转

信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html

2、csp信奥赛冲刺一等奖有效刷题题解:

CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

CSP信奥赛C++一等奖通关刷题题单及题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

3、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转


GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html

4、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}

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

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

相关文章

全网最全8个AI论文工具,专科生轻松搞定论文格式规范!

全网最全8个AI论文工具&#xff0c;专科生轻松搞定论文格式规范&#xff01; AI 工具的崛起&#xff0c;让论文写作不再难 在当今这个信息爆炸的时代&#xff0c;论文写作已经成为专科生学习生活中不可或缺的一部分。无论是课程论文、毕业论文还是科研报告&#xff0c;都需要严…

CSGO财富导师成了全网通缉犯,整个群都在喊“砍他”

&#x1f4a5; 最近超多“导狗”人设彻底崩塌&#xff01; 被全网人肉通缉&#xff0c;几千人的会员群直接炸锅‼️ “报警&#xff01;砍他&#xff01;”骂声此起彼伏&#xff0c;那叫一个热闹… 这就是我一直不让你们听所谓“博主分析饰品走势”、不让跟风炒饰品的原因&…

亲测好用!10个AI论文平台测评:本科生毕业论文神器推荐

亲测好用&#xff01;10个AI论文平台测评&#xff1a;本科生毕业论文神器推荐 2026年AI论文平台测评&#xff1a;为什么需要这份榜单&#xff1f; 随着人工智能技术的不断发展&#xff0c;越来越多的本科生开始借助AI工具辅助毕业论文写作。然而&#xff0c;面对市场上琳琅满目…

AI应用架构师必知:智能客户AI服务平台的模型部署架构设计

AI应用架构师必知&#xff1a;智能客户AI服务平台的模型部署架构设计 关键词&#xff1a;智能客户AI服务平台、模型部署、架构设计、AI应用架构师、云计算、容器化、模型优化 摘要&#xff1a;本文深入探讨智能客户AI服务平台的模型部署架构设计&#xff0c;旨在为AI应用架构师…

Day 5 Art 01: Flutter 框架下的状态管理哲学 - 为什么 UI = f(State) 是鸿蒙开发的基石?

前言&#xff1a;在混沌中寻找秩序的终极算法 在移动开发漫长的演进史中&#xff0c;开发者始终在与一个幽灵作战——复杂性。当应用从简单的展示页面演变为具备实时交互、多端协同、本地持久化的复杂系统时&#xff0c;逻辑与 UI 之间的连线往往会交织成一张令人绝望的乱麻。…

数字图像处理基础知识(一)

1.数字图像处理处理的是什么呢&#xff0c;处理的就是图像 2.计算机视觉和机器视觉 3.图像的处理包括缺陷检测&#xff0c;目标识别&#xff0c;尺寸测量等。 4.图像的滤波&#xff0c;图像的变换&#xff0c;图像分割 5.数字图像处理基础 6.空间域图像处理 图像的反转 对数变换…

【计算机毕业设计案例】基于springboot的保护濒危动物公益网站濒危动物保护、爱心捐赠、志愿者培训和公益募捐系统(程序+文档+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

Day 5 Art 02: Flutter 框架 Provider 模式深度解析 - 依赖注入与响应式监听的工业级方案

前言&#xff1a;在复杂的 Widget 树中搭建“数据高速公路” 随着 Flutter 应用规模的扩大&#xff0c;开发者们普遍会遭遇一个被称为“Props Drilling&#xff08;属性钻取&#xff09;”的工程噩梦&#xff1a;为了让嵌套在底层的一个小组件获取到顶层的用户信息&#xff0c…

全网最全专科生AI论文网站TOP9:毕业论文写作测评

全网最全专科生AI论文网站TOP9&#xff1a;毕业论文写作测评 2026年专科生AI论文写作工具测评&#xff1a;为何需要这份榜单&#xff1f; 随着人工智能技术的不断发展&#xff0c;越来越多的专科生开始借助AI工具辅助毕业论文的撰写。然而&#xff0c;面对市场上琳琅满目的平台…

STM32F0实战:基于HAL库开发【1.9】

6.1.3 时钟安全 1.时钟安全系统(CSS) 时钟安全系统可以由软件使能,用于监测HSE的工作是否正常。时钟安全系统激活后,时钟监测器将在HSE振荡器启动延迟后被使能,并在HSE时钟关闭后关闭。在时钟监测器工作期间,HSE时钟在发生故障时将被关闭,系统时钟自动切换到HSI振荡器…

无线网络仿真:蓝牙网络仿真_(3).蓝牙网络仿真环境搭建

蓝牙网络仿真环境搭建 在无线网络仿真中&#xff0c;蓝牙网络的仿真环境搭建是一个重要的步骤。本节将详细介绍如何搭建一个蓝牙网络仿真环境&#xff0c;包括选择合适的仿真工具、配置仿真参数、生成仿真场景以及验证仿真结果等关键步骤。通过本节的学习&#xff0c;您将能够掌…

得物Java面试被问:Netty的ByteBuf引用计数和内存释放

一、ByteBuf 内存模型 1. ByteBuf 结构概览 java 复制 下载 /*** ByteBuf 内存层次结构*/ public class ByteBufMemoryModel {/*** ByteBuf 的两种主要类型&#xff1a;* 1. Heap Buffer&#xff08;堆缓冲区&#xff09;* - 存储在 JVM 堆内存* - 快速分配和释放* …

小程序毕设选题推荐:基于springboot的公益动物平台、保护濒危系统保护濒危动物公益网站系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

无线网络仿真:蓝牙网络仿真_(4).蓝牙网络仿真工具介绍

蓝牙网络仿真工具介绍 在上一节中&#xff0c;我们已经了解了蓝牙网络的基本概念和工作原理。本节将详细介绍几种常用的蓝牙网络仿真工具&#xff0c;包括它们的特性和应用场景&#xff0c;以及如何使用这些工具进行蓝牙网络的仿真和分析。 1. NS-3 (Network Simulator 3) 1.1 …

LLM推理引擎在电商中的作用

LLM推理引擎在电商中的作用关键词&#xff1a;LLM推理引擎、电商、自然语言处理、用户体验、营销决策摘要&#xff1a;本文深入探讨了LLM推理引擎在电商领域的重要作用。首先介绍了相关背景知识&#xff0c;包括研究目的、预期读者等。接着阐述了LLM推理引擎的核心概念及其与电…

计算机小程序毕设实战-基于springboot的保护濒危动物公益网站系统科普展示、公益行动、捐赠管理【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

详解redis(3):哨兵

一、为什么需要 Redis Sentinel?在 主从复制 架构下&#xff0c;Redis 仍然存在一个问题&#xff1a;主节点宕机后&#xff0c;没有自动切换能力Redis Sentinel 的目标是&#xff1a;在不引入复杂分片的前提下&#xff0c;为 Redis 提供“自动故障检测 自动主从切换 服务发现…

全志T113-环境

全志T113-环境一、虚拟机环境搭建 1.配置环境 安装一个 用于 虚拟机和 windows共享剪切板的工具包。 sudo apt install open-vm-tools-desktop 重启reboot 安装软件包 sudo apt-get install -y sed make binutils buil…

全志T113ADB传输

全志T113ADB传输连接OTG线 安装windows板ADB https://gitlab.com/dongshanpi/tools/-/raw/main/ADB.7z下载Windows版ADB工具下载完成后解压 ​ 进入到这个文件​ 拷贝文件路径 ​ 添加环境变量s ​ 检查是否安装成功,…

GESP认证C++编程真题解析 | 202312 七级

​欢迎大家订阅我的专栏:算法题解:C++与Python实现! 本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战! 专栏特色 1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的…