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

黑龙江省高速公路建设局网站记事本做网站的代码

黑龙江省高速公路建设局网站,记事本做网站的代码,中土建设集团有限公司网站,亚马逊平台的运营模式文章目录 一.二维差分构造差分二维数组二维差分算法状态dp求b[i][j]数组的二维前缀和图解 二.三维前缀和与差分三维前缀和图解:三维差分核心公式图解:模板题 一.二维差分 给定一个原二维数组a[i][j],若要给a[i][j]中以(x1,y1)和(x2,y2)为对角线的子矩阵中每个数都加上一个常数…

在这里插入图片描述

文章目录

  • 一.二维差分
    • 构造差分二维数组
    • 二维差分算法
    • 状态dp求b[i][j]数组的二维前缀和图解
  • 二.三维前缀和与差分
    • 三维前缀和图解:
    • 三维差分核心公式图解:
    • 模板题

一.二维差分

  • 给定一个原二维数组a[i][j],若要给a[i][j]中以(x1,y1)(x2,y2)为对角线的子矩阵中每个数都加上一个常数c,暴力的做法时间复杂度为O(N^2),使用二维差分可以在O(1)的时间复杂度内完成该操作
    在这里插入图片描述

构造差分二维数组

  • 构造差分二维数组b[i][j]使得原二维数组a[i][j]是二维数组b[i][j]的二维前缀和数组,即满足:
    在这里插入图片描述
    在这里插入图片描述

二维差分算法

  • 若使原数组a[i][j]中以(x1,y1)(x2,y2)为对角线的子矩阵中每个数都加上一个常数c,等价于对b[i][j]数组进行如下操作:
    • b[x1][y1] += c
    • b[x2+1][y2+1] += c
    • b[x2+1][y1] -= c
    • b[x1][y2+1] -= c
  • 核心操作接口:
//使原数组a[i][j]中以(x1,y1)和(x2,y2)为对角线的子矩阵中每个数都加上一个常数c
//接口可以用于构造差分矩阵以及进行原数组的矩阵元素整体修改操作
void Matrix_Add(long long(*b)[1010],int x1 ,int y1,int x2 ,int y2,int c){b[x1][y1] += c;b[x2+1][y2+1] += c;b[x1][y2+1] -= c;b[x2+1][y1] -= c;
}
//状态递推法对b[i][j]数组求二维前缀和,以获取原数组的元素--> 默认矩阵第0行第0列全部元素为0
void Get_Pre_Sum(long long(*b)[1010],int row , int col){//求(1,1)~(i,j)的子矩阵的和for(int i = 1 ; i <= row ; ++i){for(int j = 1 ; j<=col ; ++j){b[i][j] += (b[i-1][j] + b[i][j-1] - b[i-1][j-1]);}}
}
  • 求出b[i][j]数组的二维前缀和就可以恢复原数组a[i][j]

状态dp求b[i][j]数组的二维前缀和图解

在这里插入图片描述

二.三维前缀和与差分

三维前缀和图解:

在这里插入图片描述

  • 前缀和递推构造接口:
void Get_Pre_Sum(vector<vector<vector<long long>>>& Board,int high,int row,int col ){for(int i = 1 ; i <= high ; ++i){for(int j = 1 ;  j <= row ; ++j){for(int k = 1 ; k <= col ; ++k){Board[i][j][k] += Board[i-1][j][k] + Board[i][j-1][k] - Board[i-1][j-1][k] +Board[i][j][k-1] - Board[i-1][j][k-1] - Board[i][j-1][k-1] + Board[i-1][j-1][k-1];}}}
}

三维差分核心公式图解:

在这里插入图片描述

  • "相邻点"的加减满足容斥关系,相邻互斥,相间相容
  • 核心公式接口:
void Matrix_Add(vector<vector<vector<long long>>>& Board,int x1 , int y1 , int z1 , int x2 , int y2 , int z2 , int c){Board[x1][y1][z1] += c;Board[x1][y2+1][z1] -= c;Board[x2+1][y1][z1] -= c;Board[x2+1][y2+1][z1] += c;Board[x1][y1][z2+1] -= c;Board[x1][y2+1][z2+1] += c;Board[x2+1][y1][z2+1] += c;Board[x2+1][y2+1][z2+1] -= c;
}

模板题

差分模板题1
差分模板题2

在这里插入图片描述

http://www.yayakq.cn/news/655038/

相关文章:

  • 好心人给个安全的网站建设网站需要那些技术人员
  • vps绑定多个网站2014做社交网站
  • php网站怎么做的事件营销成功案例
  • 特殊符号网站网站层次索引模板
  • 湖北企业建站系统信息自动建立wordpress
  • 仓山网站建设深圳市福田区住房和建设局
  • 网站域名 格式会网站建设怎样赚钱
  • 国外做微课的网站济南网站建设安卓版
  • 怎么做移动端的网站wordpress tml
  • 北京网站建设 奥美通全网营销seo排名网
  • 网站内容描述做网站站长先把作息和身体搞好
  • 专门做app网站wordpress中文版支持繁体
  • 国外优质设计网站wordpress 流程
  • 网站搭建什么意思小米商城的网站建站
  • 网站 用户体验的重要性汕头网站制作专业
  • 做网站最专业的公司有哪些怎么设计网站规划方案
  • 建筑工程网官方网站做网站赚钱难
  • 做网站时会留下ip地址吗网站导航栏字体
  • 石家庄网站建设wsjz烟台网站建设方案咨询
  • 苏州建设工程合同备案网站凡科互动电话
  • 漂亮的个人网站巫山集团网站建设
  • 个人建网站文稿写作网站
  • 厦门网站建设哪家专业沧县网站建设价格
  • 建材企业网站营销怎么做自己做的网站竞价优化
  • 网站举报12321wordpress添加原文链接
  • wordpress 改网站域名中国设计网官网入口
  • 网站开发一般用什么工具dede响应式网站模板下载
  • 网站建设费用计入哪个会计科目搭建网站的步骤有哪些
  • 网站登录和权限怎么做seo网站设计费用
  • 做网站应该会什么精准营销定义