当前位置: 首页 > news >正文

补题( Convolution, 二维卷积求输出矩阵元素和最大值)

 来源:https://codeforces.com/gym/105231/problem/H

题目描述:

一、题目分析
 
本题涉及深度学习中的二维卷积操作。给定一个n×m的二维输入矩阵I和一个k×l的核矩阵K ,通过特定公式计算得到(n - k + 1)×(m - l + 1)的输出矩阵O ,要求在核矩阵K元素只能为 - 1、0、1 的条件下,找出输出矩阵O所有元素之和的最大值。
 
二、解题思路
 
前缀和优化
 
首先对输入矩阵I计算二维前缀和。对于矩阵I ,设b[i][j]表示从(1, 1)到(i, j)的子矩阵元素之和。计算方式为b[i][j]=b[i][j - 1]+b[i - 1][j]-b[i - 1][j - 1]+a[i][j] 。这样做的好处是可以在O(1)时间内获取任意子矩阵的元素和。
 
计算卷积结果
 
对于输出矩阵O中的每个元素O(p,q) ,根据公式 ,由于K元素为 - 1、0、1 ,我们可以遍历所有可能的核矩阵组合(实际不需要真的枚举矩阵,而是通过分析元素贡献 )。
 
利用前缀和计算子矩阵和,例如对于核矩阵覆盖的子矩阵,通过前缀和相减的方式得到对应子矩阵元素和。如代码中t = b[i][j] - b[i - t1][j] - b[i][j - t2] + b[i - t1][j - t2] ,这里t1 = k ,t2 = l 。
 
求最大值
 
遍历所有可能的核矩阵取值情况(本质是考虑每个位置对结果的正负贡献 ),计算出不同情况下输出矩阵O元素之和,取其中的最大值。
 
三、代码实现(C++)

 #include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e3 + 10;
int a[N][N], b[N][N];
signed main() {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int n, m, k, l;cin >> n >> m >> k >> l;for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {cin >> a[i][j];b[i][j] = b[i][j - 1] + b[i - 1][j] - b[i - 1][j - 1] + a[i][j];}}int sum = 0;int t1 = n - k + 1, t2 = m - l + 1;for (int i = t1; i <= n; i++) {for (int j = t2; j <= m; j++) {int t = b[i][j] - b[i - t1][j] - b[i][j - t2] + b[i - t1][j - t2];sum += abs(t);}}cout << sum;return 0;
}

四、复杂度分析
 
时间复杂度:计算前缀和部分是两层嵌套循环,时间复杂度为O(n×m) ;后续计算输出矩阵元素和部分也是两层嵌套循环,时间复杂度为O((n - k + 1)×(m - l + 1)) ,总体时间复杂度为O(n×m) ,在题目给定的数据规模下可以接受。
 
空间复杂度:使用了两个二维数组a和b存储矩阵数据和前缀和,空间复杂度为O(n×m) 。

相关文章:

  • 华为云Astro大屏连接器创建操作实例:抽取物联网iotda影子设备数据的连接器创建
  • 【中间件】bthread_基础_TaskControl
  • Kotlin革新数据分析
  • linux 使用nginx部署next.js项目,并使用pm2守护进程
  • 信息系统项目管理师-软考高级(软考高项)​​​​​​​​​​​2025最新(六)
  • 快速上手非关系型数据库-MongoDB
  • 使用Node编写轻量级后端快速入门
  • UDP数据包和TCP数据包的区别;网络编程套接字;不同协议的回显服务器
  • WPF采集欧姆龙PLC、基恩士PLC、西门子PLC、汇川PLC、台达PLC数据
  • WPF实现数据库操作与日志记录
  • 2025年- H17-Lc125-73.矩阵置零(矩阵)---java版
  • MySQL 查找指定表名的表的主键
  • Kubernetes(k8s)的API Server 组件原理与结合生产实战教程
  • 【LeetCode Hot100】回溯篇
  • Flowable7.x学习笔记(十六)分页查询我的待办
  • Ethan独立开发产品日报 | 2025-04-30
  • WPF之Image控件详解
  • 文件包含漏洞学习
  • Redis 挂掉后高并发系统的应对策略:使用 Sentinel 实现限流降级与 SkyWalking 监控优化
  • 什么是:云边端一体化架构
  • 巴菲特股东大会前瞻:执掌伯克希尔60年,巨轮将驶向何方
  • 11家券商一季度净利翻番:9家利润超20亿,国泰海通居首
  • 前行中的“模速空间”:要攻克核心技术,也要成为年轻人创业首选地
  • “五一”逃离城市计划:带上帐篷去大自然里充电
  • 庄语乐︱宋代历史是被“塑造”出来的吗?
  • 李铁案二审驳回上诉,维持一审有期徒刑20年的判决