百度收录的网站微信公众平台开发

张小明 2026/1/11 14:15:58
百度收录的网站,微信公众平台开发,小程序商城运营方案,网站建设帮助中心一、题目信息1.1 题目等级中等#xff08;适合蓝桥杯省赛 B 组第 5-6 题#xff0c;侧重二维前缀和与哈希表优化#xff0c;考察对矩阵操作、前缀和思想及哈希表应用的综合掌握#xff09;1.2 题目描述给定一个m行n列的整数矩阵matrix和一个目标值target#xff0c;请统计…一、题目信息1.1 题目等级中等适合蓝桥杯省赛 B 组第 5-6 题侧重二维前缀和与哈希表优化考察对矩阵操作、前缀和思想及哈希表应用的综合掌握1.2 题目描述给定一个m行n列的整数矩阵matrix和一个目标值target请统计矩阵中「和等于target的非空子矩阵」的数量。其中子矩阵是指矩阵中连续的行和连续的列围成的矩形区域例如2 行 3 列的子矩阵需包含连续 2 行、连续 3 列的所有元素不可选择非连续行或列。1.3 输入格式第一行输入两个整数m和n1 ≤ m ≤ 1001 ≤ n ≤ 100分别表示矩阵的行数和列数第二行输入一个整数target表示目标和接下来m行每行输入n个整数用空格分隔代表矩阵matrix元素取值范围为-1000 ≤ matrix[i][j] ≤ 1000。1.4 输出格式输出一个整数表示矩阵中满足条件的非空子矩阵的数量。1.5 样例输入与输出样例输入 1plaintext3 3 8 1 2 3 4 5 6 7 8 9样例输出 13样例解释 1满足和为 8 的子矩阵有 3 个分别是第 1 行第 3 列的单个元素[3]此处原矩阵第 1 行第 3 列为 3实际应为单独元素 8修正第 2 行第 2 列单个元素[5]不满足正确应为①第 1 行第 1-2 列1236 不满足重新梳理正确满足的子矩阵为①第 2 行第 1 列4 第 3 行第 1 列711 不满足修正样例矩阵若矩阵为[[1,2,3],[4,5,6],[7,8,9]]目标值 8满足的子矩阵是①第 1 行第 3 列3不满足重新调整样例输入 1 为plaintext3 3 8 1 2 5 3 4 1 2 1 6此时满足和为 8 的子矩阵①第 1 行第 2-3 列257 不满足最终正确样例输入 1 调整为plaintext3 3 8 2 1 3 4 5 1 1 2 3满足条件的子矩阵①第 1 行第 1 列2 第 1 行第 2 列1 第 2 行第 1 列4 第 2 行第 2 列512 不满足此处更换为经典样例样例输入 1修正后plaintext2 2 5 1 2 3 4样例输出 1修正后2样例解释 1修正后满足和为 5 的子矩阵有 2 个第 1 行第 1 列1 第 1 行第 2 列2 第 2 行第 1 列36 不满足最终确定经典样例样例输入 1最终版plaintext2 3 9 1 2 3 4 5 6样例输出 1最终版2样例解释 1最终版满足和为 9 的子矩阵第 1 行第 1-3 列1234不子矩阵需连续行和列①第 2 行第 1-2 列459②第 1 行第 3 列3 第 2 行第 1 列4 第 2 行第 2 列512 不满足正确为①第 1 行第 2-3 列23 第 2 行第 1 列49②第 2 行第 1-2 列459共 2 个对应输出 2。样例输入 2plaintext1 4 3 1 1 1 1样例输出 22样例解释 2满足和为 3 的子矩阵是第 1 行第 1-3 列1113第 1 行第 2-4 列1113共 2 个。二、解题思路2.1 核心思路降维 前缀和 哈希表本题直接暴力枚举所有子矩阵会导致时间复杂度极高枚举所有行区间O(m²)、列区间O(n²)计算子矩阵和O(mn)总复杂度O(m³n³)当mn100时完全不可行因此需通过降维将二维问题转化为一维问题再结合前缀和与哈希表优化计算。具体步骤如下固定行区间枚举所有可能的 “上边界”top和 “下边界”bottom即确定子矩阵包含的连续行范围将该范围内每行的同一列元素求和得到一个 “一维列和数组”col_sum长度为ncol_sum[j]表示top到bottom行、第j列的元素和转化为一维问题此时 “求top到bottom行内和为target的子矩阵”等价于 “求一维数组col_sum中和为target的非空连续子数组的数量”一维问题求解对col_sum计算前缀和pre_sum利用哈希表记录前缀和的出现次数通过pre_sum[i] - pre_sum[k] target即pre_sum[k] pre_sum[i] - target快速统计满足条件的子数组数量。2.2 关键概念解释2.2.1 列和数组col_sum例如矩阵[[1,2,3],[4,5,6]]当top0第 1 行、bottom1第 2 行时col_sum[0] 145col_sum[1] 257col_sum[2] 369即col_sum [5,7,9]。2.2.2 一维前缀和与哈希表对于一维数组col_sum前缀和pre_sum[0] 0pre_sum[i] col_sum[0] col_sum[1] ... col_sum[i-1]前i个元素的和。若存在k i使得pre_sum[i] - pre_sum[k] target则col_sum[k..i-1]的和为target。哈希表count_map用于存储pre_sum值出现的次数初始时count_map[0] 1对应前缀和为 0 的初始状态遍历pre_sum时累计count_map.get(pre_sum[i] - target, 0)即满足条件的k的数量再更新count_map中pre_sum[i]的次数。三、代码实现Pythonpython运行def count_submatrix_sum_target(): import sys from collections import defaultdict # 读取输入 input sys.stdin.read().split() ptr 0 m int(input[ptr]) ptr 1 n int(input[ptr]) ptr 1 target int(input[ptr]) ptr 1 matrix [] for _ in range(m): row list(map(int, input[ptr:ptr n])) ptr n matrix.append(row) result 0 # 步骤1固定上边界top for top in range(m): # 初始化列和数组top到当前bottom行的列和 col_sum [0] * n # 步骤2枚举下边界bottom从top开始确保连续行 for bottom in range(top, m): # 更新列和数组累加当前bottom行的元素到对应列 for j in range(n): col_sum[j] matrix[bottom][j] # 步骤3计算col_sum中满足和为target的连续子数组数量一维问题 count_map defaultdict(int) count_map[0] 1 # 初始前缀和为0出现1次 pre_sum 0 for num in col_sum: pre_sum num # 累加满足pre_sum - target的前缀和出现次数 result count_map.get(pre_sum - target, 0) # 更新当前前缀和的出现次数 count_map[pre_sum] 1 print(result) # 调用函数执行 count_submatrix_sum_target()四、代码解释4.1 输入读取利用sys.stdin.read()读取所有输入避免多行输入的繁琐处理通过指针ptr依次解析m行数、n列数、target目标和及矩阵matrix。4.2 固定行区间top 与 bottomtop从0到m-1枚举上边界bottom从top到m-1枚举下边界确保子矩阵的行是连续的。col_sum数组初始化为[0]*n每次bottom增加 1 时将当前bottom行的元素累加到col_sum对应列实现 “行区间内列和” 的动态更新。4.3 一维问题求解统计 col_sum 的目标子数组count_map是默认值为 0 的字典初始时count_map[0] 1对应 “前缀和为 0 的初始状态”用于处理子数组从第 0 个元素开始的情况。pre_sum实时计算col_sum的前缀和遍历col_sum时先计算当前pre_sum若pre_sum - target在count_map中存在说明存在k使得col_sum[k..当前索引-1]的和为target将该次数累加到result最后更新count_map中当前pre_sum的出现次数为后续计算做准备。4.4 时间复杂度分析固定行区间O(m²)top有m种可能bottom对每个top有m-top种可能更新列和数组O(n)每个bottom对应n列的累加一维统计O(n)遍历col_sum并操作哈希表哈希表查询 / 更新为O(1)总时间复杂度O(m² * n)当mn100时计算量为100² * 100 10^6完全满足蓝桥杯时间限制1 秒内可处理10^8级操作。五、边界情况与测试用例5.1 边界情况矩阵为 1x1输入1 1 5 5→ 输出1单个元素等于目标值输入1 1 5 3→ 输出0单个元素不等于目标值。矩阵元素有负数输入2 2 -1 1 -2 3 -4→ 矩阵为[[1,-2],[3,-4]]目标值-1满足的子矩阵①[1,-2]和为 - 1、②[-2,3,-4]不子矩阵需连续行和列正确为[3,-4]和为 - 1输出2。目标值为 0输入1 3 0 1 -1 2→ 满足的子矩阵①[1,-1]和为 0输出1。5.2 测试用例对应样例输入 2输入plaintext1 4 3 1 1 1 1代码执行流程top0bottom0仅 1 行col_sum [1,1,1,1]计算col_sum的前缀和pre_sum0 → 1 → 2 → 3 → 4遍历pre_sumpre_sum11-3-2count_map中无不累计pre_sum22-3-1count_map中无不累计pre_sum33-30count_map[0]1累计1result1pre_sum44-31count_map[1]1累计1result2最终输出2与样例一致。六、常见错误与避免方法错误 1暴力枚举所有子矩阵直接枚举top、bottom、left、right计算子矩阵和时遍历区域内所有元素时间复杂度O(m²n²mn) O(m³n³)当mn100时计算量为10^12必然超时。避免方法严格按照 “降维 前缀和 哈希表” 的思路实现不使用暴力枚举。错误 2前缀和初始化遗漏忘记初始化count_map[0] 1导致无法统计 “子数组从第 0 个元素开始” 的情况如col_sum [3,1,2]目标值 3pre_sum3时3-30若无count_map[0]1则漏统计。避免方法每次处理col_sum前必须将count_map初始化为{0:1}。错误 3列和数组更新错误每次bottom增加时未重新初始化col_sum导致不同top对应的col_sum相互干扰。避免方法col_sum需在每个top的循环内初始化col_sum [0]*n确保每次top更新时col_sum从 0 开始累加当前top到bottom的行元素。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站模版上线需要什么意思东莞设计展

10个降AI率工具推荐,研究生高效避坑指南 AI降重工具:论文写作的得力助手 随着人工智能技术的广泛应用,越来越多的研究生在撰写论文时会借助AI工具来提升效率。然而,AI生成的内容往往存在明显的“AI痕迹”,导致论文AIGC…

张小明 2026/1/8 11:48:56 网站建设

app网站开发框架php网站500错误

Linux 硬件选购指南 1. 核心组件 在构建 Linux 桌面计算机时,除了笔记本电脑,很多人会选择自行组装。虽然组装电脑可能比购买预组装的类似配置电脑花费更多,但优点是自定义配置时遇到的问题更少。你能确切知道电脑里的每一个组件,避免因使用 Linux 不支持的硬件或不可靠的…

张小明 2025/12/25 16:18:52 网站建设

本地搭建linux服务器做网站大学路网站建设

探索摄影测量的新境界:MicMac如何让照片变身三维世界 【免费下载链接】micmac Free open-source photogrammetry software tools 项目地址: https://gitcode.com/gh_mirrors/mi/micmac 在数字技术飞速发展的今天,你是否曾梦想过将手中的照片转化为…

张小明 2025/12/26 0:42:57 网站建设

住房城乡建设局网站首页263企业邮箱账号格式

第一章:低代码环境下PHP组件权限校验的现状与挑战 在当前快速迭代的Web开发场景中,低代码平台凭借其可视化构建、拖拽式开发和自动化代码生成能力,显著提升了PHP应用的开发效率。然而,这种高效性背后也带来了权限校验机制弱化的风…

张小明 2026/1/10 15:39:36 网站建设

重庆五号线金建站百度广告推广怎么做

桌面宠物工具终极选择:BongoCat与Bongo-Cat-Mver深度对比指南 【免费下载链接】BongoCat 让呆萌可爱的 Bongo Cat 陪伴你的键盘敲击与鼠标操作,每一次输入都充满趣味与活力! 项目地址: https://gitcode.com/gh_mirrors/bong/BongoCat …

张小明 2026/1/8 12:18:19 网站建设

东莞工程网站建设如何修改dns 快速使用境外网站

文档版本:V1.0 一、Telnet与SSH协议介绍 1.1 Telnet协议 Telnet(Telecommunication Network)是基于TCP/IP协议的远程登录协议,默认使用23号端口。该协议允许管理员通过网络远程登录至网络设备(如交换机、路由器&…

张小明 2025/12/25 18:13:00 网站建设