049.二维差分

news/2026/1/18 11:05:51/文章来源:https://www.cnblogs.com/ssbt/p/19497907

一维差分

对于原始数组a[]

通过d[i]=a[i]-a[i-1]初始化出d[]差分数组

对差分数组进行若干次修改

// 在[l,r]上加k
void change(int l,int r,int k){d[l]+=k;d[r+1]-=k;
}

最后update得到最终的a[]

void update(int n){for(int i=1;i<=n;++i){d[i]+=d[i-1];a[i]=d[i];}
}

或者直接在原始数组上操作a[i]-=a[i-1]进行初始化

void change(int l,int r,int k){a[l]+=k;a[r+1]-=k;
}
void update(int n){for(int i=1;i<=n;++i){a[i]+=a[i-1];}
}

二维差分

为了避免若干边界问题

对于一个n * m的原始数组a[][]

我们加工出一个(n+2)*(m+2)的差分数组d[][]

最外层都用0包裹

//在以[i,j]为左上角,[x,y]为右下角的矩形 + k
void change(int i,int j,int x,int y,int k){d[i][j]+=k;d[i][y+1]-=k;d[x+1][j]-=k;d[x+1][y+1]+=k;
}

update操作类似二维前缀和

void update(int n,int m){for(int i=1;i<=n;++i){for(int j=1;j<=m;++j){d[i][j]=d[i-1][j]+d[i][j-1]-d[i-1][j-1];}}
}

习题

贴邮票

尝试将每一个0都作为左上角进行贴邮票

能贴则贴(邮票对应区域和为0)

不修改原始数组,在差分数组上进行贴邮票行为

最后检查是否原数组的每一个0在差分数组上都被覆盖

leetcode 2132

class Solution {void change(int i,int j,int x,int y,int k,vector<vector<int>>&d){d[i][j]+=k;d[i][y+1]-=k;d[x+1][j]-=k;d[x+1][y+1]+=k;}void update(vector<vector<int>>&d,int n,int m){for(int i=1;i<=n;++i){for(int j=1;j<=m;++j){d[i][j]+=d[i-1][j]+d[i][j-1]-d[i-1][j-1];}}}
public:bool possibleToStamp(vector<vector<int>>& M, int h, int w) {int n=M.size();int m=M[0].size();vector<vector<int>>p(n+1,vector<int>(m+1));vector<vector<int>>d(n+2,vector<int>(m+2));for(int i=0;i<n;++i){for(int j=0;j<m;++j){p[i+1][j+1]=p[i+1][j]+p[i][j+1]+M[i][j]-p[i][j];}}for(int i=0;i+h<=n;++i){for(int j=0;j+w<=m;++j){int x=i+h;int y=j+w;int sum=p[x][y]+p[i][j]-p[i][y]-p[x][j];if(sum==0){change(i+1,j+1,x,y,1,d);}}}update(d,n,m);for(int i=1;i<=n;++i){for(int j=1;j<=m;++j){if(M[i-1][j-1]==0&&d[i][j]==0)return 0;}}return 1;}
};

最大祝福场

离散化 + 二维差分

先对原坐标轴进行放大,规避小数

然后是离散化(排序,去重,二分

update的同时更新ans

leetcode 74

class Solution {
public:int fieldOfGreatestBlessing(vector<vector<int>>& f) {vector<long>X,Y;for(auto a:f){long x=(long)a[0]*2,y=(long)a[1]*2,r=a[2];X.push_back(x-r);X.push_back(x+r);Y.push_back(y-r);Y.push_back(y+r);}ranges::sort(X);X.erase(unique(X.begin(),X.end()),X.end());ranges::sort(Y);        Y.erase(unique(Y.begin(),Y.end()),Y.end());int n=X.size();int m=Y.size();vector<vector<int>>d(n+2,vector<int>(m+2));for(auto a:f){long xx=(long)a[0]*2,yy=(long)a[1]*2,r=a[2];long x1=xx-r;long y1=yy-r;long x2=xx+r;long y2=yy+r;int i=lower_bound(X.begin(),X.end(),x1)-X.begin()+1;int x=lower_bound(X.begin(),X.end(),x2)-X.begin()+1;int j=lower_bound(Y.begin(),Y.end(),y1)-Y.begin()+1;int y=lower_bound(Y.begin(),Y.end(),y2)-Y.begin()+1;d[i][j]++;d[i][y+1]--;d[x+1][j]--;d[x+1][y+1]++;}int ans=0;for(int i=1;i<=n;++i){for(int j=1;j<=m;++j){d[i][j]+=d[i-1][j]+d[i][j-1]-d[i-1][j-1];ans=max(ans,d[i][j]);}}return ans;}
};

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

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

相关文章

2025年本地市场热门重型回弹仪品牌推荐,智能非金属超声检测仪/超声波回弹仪/数显碳化深度尺/高强回弹仪回弹仪供应商推荐榜单 - 品牌推荐师

随着我国基础设施建设的持续深化与既有建筑安全评估需求的日益增长,作为混凝土强度无损检测的关键设备,重型回弹仪的市场关注度显著提升。行业正经历从传统机械式向数字化、智能化、高精度方向的转型。然而,面对市场…

融智学形式本体论:一种基于子全域与超子域的统一认知架构

融智学形式本体论&#xff1a;一种基于子全域与超子域的统一认知架构摘要本文正式提出并系统阐述 “融智学形式本体论” 。它以三个不可再分的元子&#xff08;物理、意义、文法&#xff09;为基底&#xff0c;构建一个称为 “分层集合范畴” 的数学结构&#xff0c;实现了对物…

动态电压恢复器(DVR)模型 Matlab/simulink 质量过硬, 可用于治理电能质量问...

动态电压恢复器&#xff08;DVR&#xff09;模型 Matlab/simulink 质量过硬&#xff0c; 可用于治理电能质量问题&#xff1a;仿真总时长0.7s&#xff0c;DVR始终接入&#xff0c;具体如下&#xff1a; 0.1-0.2s治理电压暂降&#xff1b; 0.3-0.4s治理电压暂升&#xff1b; 0.…

2026年国内可靠的全自动超声波清洗机厂家哪家靠谱,单臂超声波清洗机/晶圆清洗机,全自动超声波清洗机公司联系方式 - 品牌推荐师

近年来,随着制造业对精密清洗需求的持续攀升,全自动超声波清洗机凭借高效、环保、一致性强的技术优势,成为汽车零部件、半导体、精密五金等行业的核心设备。然而,市场供应商鱼龙混杂,技术实力、服务能力与定制化水…

MATLAB环境下基于数据驱动的随机子空间(SSI-DATA)和协方差驱动的随机子空间(SSI...

MATLAB环境下基于数据驱动的随机子空间(SSI-DATA)和协方差驱动的随机子空间(SSI-COV)的结构模态参数识别方法&#xff0c;可用于土木&#xff0c;航空航天&#xff0c;机械等领域。 本品为程序&#xff0c;已调通&#xff0c;可直接运行。一、系统概述 本系统是一套基于MATLAB开…

Apache 详解(在 Ubuntu 24 中安装和配置 Apache,超详细)

零散知识讲解 目录零散知识讲解站点配置和全局配置的区别www-data 用户介绍什么是进程的上下文切换?TCP 连接的三个阶段客户端和服务器通信的过程开启 AcceptFilter 和关闭 AcceptFilter的区别在 Ubuntu 24 中安装和配…

Invicti Standard v26.1.0 发布 - 企业级 Web 应用与 API 安全

Invicti Standard v26.1.0 for Windows - 企业级 Web 应用与 API 安全Invicti Standard v26.1.0 for Windows - 企业级 Web 应用与 API 安全 Invicti (formerly Netsparker) | Web Application and API Security for E…

4.4 虚拟人口型驱动:让静态图像开口说话的魔法

4.4 虚拟人口型驱动:让静态图像开口说话的魔法 引言 在前三节中,我们学习了虚拟人的视觉外观生成、扩散模型与ControlNet技术以及声音克隆技术。现在,我们来到了让虚拟人真正"活起来"的关键环节——口型驱动技术。这项技术能够让静态的虚拟人图像根据语音内容同…

leetcode 881. Boats to Save People 救生艇

Problem: 881. Boats to Save People 救生艇 解题过程 排序&#xff0c;然后查找可以配对的&#xff0c;而且右上界是不断缩小的&#xff0c;用到了状态数组 优化版本只需要求出可以配对的&#xff0c;然后总数减去配对数量 Code class Solution { public:int numRescueBoats…

5.2 多模态OCR架构:Donut、TrOCR、LayoutLMv3全面对比

5.2 多模态OCR架构:Donut、TrOCR、LayoutLMv3全面对比 引言 在上一节中,我们回顾了OCR技术的发展历程,从传统的模板匹配方法到现代的深度学习和生成式AI技术。随着多模态学习的兴起,OCR技术也迎来了新的发展机遇。现代多模态OCR架构不仅能够识别文本内容,还能理解文档的…

5.1 OCR技术进化史:从传统方法到生成式AI突破

5.1 OCR技术进化史:从传统方法到生成式AI突破 引言 光学字符识别(Optical Character Recognition, OCR)是人工智能领域的一个重要分支,它使得计算机能够从图像中识别和提取文本信息。从早期的模板匹配到现代的深度学习方法,OCR技术经历了数十年的发展和演进。 在本节中…

[ARC135D] Add to Square

对网格 \(A\)黑白染色,黑色位置正负取反。这样操作就变为,左上右下加 \(x\),右上左下减 \(x\)。记 \(sx_i=\sum_{j=1}^m A_{i,j}\),\(sy_j=\sum_{i=1}^n A_{i,j}\)。 容易发现,任意行列的和都与 \(A\) 相同的所有…

yaml在嵌入式软件开发中的作用

在嵌入式软件开发领域,高效、可靠和可维护的代码是项目的核心目标。随着嵌入式系统的复杂度日益增加,开发团队需要更灵活的工具来管理配置、自动化流程和优化跨团队协作。 YAML(YAML Aint Markup Language)作为一种…

2026年出国留学机构排行榜:五家优选全面对比 - 速递信息

——文章最新发布时间:2026年1月 一、推荐背景与评价体系 在出国留学需求持续增长的背景下,权威榜单已成为学生和家长选择留学机构的重要参考依据。全球名校申请门槛不断提高,申请流程日趋复杂,留学机构的综合实力与行…

通过mathtype将公式插入word中

通过mathtype将公式插入word中利用mathtype配合word进行公式编辑,可以提高文档撰写效率。具体过程如下: 1.下载mathtype 通过百度网盘进行下载:https://pan.baidu.com/s/1qZFDtIg9Qou4gUjUQ86-UQ?pwd=jgv5 提取码:…

SAM1gptans

下面我会按“整体思路 → 关键数据结构含义 → 每个函数在干什么 → 正确性为什么成立 → 复杂度怎么分析/哪里我也卡住”的顺序,把这段代码尽可能还原成一道可理解的算法。先给一个一句话的总体概括: 把所有旋转状态…

2026智能马桶深度评测:希箭马桶,家庭如厕健康新标准 - charlieruizvin

希箭智能马桶核心产品详细推荐作为智能坐便器国家标准起草单位、十大智能卫浴品牌,希箭凭借12年技术沉淀与4大生产基地的制造实力,推出多款覆盖不同需求的智能马桶,以下为核心产品深度解析:旗舰级健康之选:希箭S2…

瞧瞧别人家的接口重试,那叫一个优雅!

前言 记得五年前的一个深夜,某个电商平台的订单退款接口突发异常,因为银行系统网络抖动,退款请求连续失败。 原本技术团队只是想“好心重试几次”,结果开发小哥写的重试代码竟疯狂调用了银行的退款接口 82次! 最终…

完整教程:算法王冠上的明珠——动态规划之路径问题(第一篇)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

论文查重前必备的5款AIGC检测工具盘点 - 还在做实验的师兄

2026年几乎所有高校都要求进行AIGC检测,AI率超过20%就会被标记。提交学校前一定要自己先测一下,但不同平台算法差异大,最好用学校指定的同款。这篇文章盘点5款主流AIGC检测工具,附带高效的降AI方案。论文查重前必备…