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

怎么用织梦做自己的网站百度一下你就知道官网新闻

怎么用织梦做自己的网站,百度一下你就知道官网新闻,js做网站预览效果,福州网站制作托管维护题目链接:【模板】二维差分 1.题目分析 类比一下,因为差分因为差分是在数组里的某一段同时加上一个K二维是在二维数组中选择一个词矩阵,让词矩阵中每一个元素都加上一个K 2.算法原理 解法-:暴力解法 -> 模拟 你告诉我一个左上角和右下…

题目链接:【模板】二维差分

1.题目分析


类比一下,因为差分因为差分是在数组里的某一段同时加上一个K二维是在二维数组中选择一个词矩阵,让词矩阵中每一个元素都加上一个K 

2.算法原理

解法-:暴力解法 -> 模拟

你告诉我一个左上角和右下角,我直接来两层for循环把这个小矩阵遍历一遍,每次遍历的时候把每一个元素都加上一个K就可以了,针对每一次询问q,最差情况下会遍历整个数组一遍,所以关于模拟它的时间复杂度是O(q*n*m),1e5*1e3*1e3=1e11,肯定会超时的

解法二:利用差分矩阵解决问题

作用:快速处理“将二维数组中,某一个子矩阵统一加上或减去一个元素”的操作

在差分数组中,某一个格子执行 +k 操作,会影响以它为左上角,以[n,m]为右下角这样的一个矩阵中,所有的元素在求完前缀和之后,统一 +k

如果我在(x1,y1),(x2,y2)的位置写了一个+k,现在求差分矩阵求前缀合,求第一行的时候是不受影响的,但求到第二行(x1,y1)这个位置的时候,因为这个格子加上了个K,所以这个格子还原之后出来的值,也是加上一个K的,正好是对应a对应的格子,如果求的是左上角8个格子的前缀和,加完全部元素后会发现是在之前的基础上多加了一个K,就是在求三角形格子的前缀和时,求的是蓝色方块里面所有元素的和,因为(x1,y1)加了一个k,整体所有格子会在之前的基础上多加一个K,所以在(x1,y1)这里加上了一个K之后,以它为左上角对应的所有右下角的格子求前缀合的时候,求完之后都会在之前的基础上加一个K

此时(x1,y1)加完K后,再对差分数组求矩阵和,除了会加上蓝色的K还会加上红色的K,是要消除这个影响的,因为我们想达到的效果只是(x1,y1)到(x2,y2)的区间里面加K,解决这个问题只需要在(x2+1,y1)(x1,y2+1)位置上减去K就消除了影响,还有一个问题是在它们消除影响的区域有一块部分重合,也就是说这两个位置-K的时候,会让一个区域重复减了两次,此时我们在重合的地方写一个+K就可以了,整个操作只会影响红色的部分

此时性质就出来了,在(x1,y1),(x2,y2)这段区间统一加K的操作,在差分数组里面只需执行四个位置就可以了,f [ x1 ][ y1 ] += k;f [ x1 ][ y2+1 ] -= k;f [ x2+1 ][ y1 ] -= k;f [ x2+1 ][ y2+1 ] += k;

第一步:预处理差分数组
假设 a [ i ][ j ] = x,相当于以(i,j)为左上角,以(i,j)为右下角的子矩阵,加上一个x,直接带入差分性质就可以了

第二步:利用差分数组解决m次修改
每次修改告诉我左上角(x1,y1),右上角(x2,y2),在这个子矩阵里面统一加上一个k,代入到上面四个公式即可

第三步:如果还原出原始的矩阵
对差分数组来一次前缀和即可

代码:
 

#include <iostream>
using namespace std;typedef long long LL;
const int N = 1010;
int n, m, q;
LL f[N][N]; // 差分矩阵// 差分矩阵的性质
void insert(int x1, int y1, int x2, int y2, int k)
{f[x1][y1] += k, f[x1][y2 + 1] -= k, f[x2 + 1][y1] -= k, f[x2 + 1][y2 + 1] += k;
}
int main()
{cin >> n >> m >> q;for (int i = 1; i <= n; ++i){for (int j = 1; j <= m; ++j){int x;  cin >> x;insert(i, j, i, j, x);}}//处理q次修改操作while (q--){int x1, x2, y1, y2, k;cin >> x1 >> y1 >> x2 >> y2 >> k;insert(x1, y1, x2, y2, k);}//利用前缀和还原出修改之后的数组for (int i = 1; i <= n; ++i){for (int j = 1; j <= m; ++j){f[i][j] = f[i - 1][j] + f[i][j - 1] - f[i - 1][j - 1] + f[i][j];cout << f[i][j] << ' ';}cout << '\n';}return 0;
}
http://www.dtcms.com/wzjs/323982.html

相关文章:

  • 用户界面设计原则seo网站优化建议
  • 广州金融网站建设百度安装到桌面
  • 利用百度图片做网站外链品牌建设的五个要素
  • 轻创网天津seo排名收费
  • 把自己做的网站上传到服务器种子搜索神器 bt 下载
  • 做衣服的网站推荐太原seo管理
  • 要建设一个网站需要什么手续费游戏广告投放平台
  • w7系统那个网站做的好seo排名培训
  • 做自动发卡密网站的教程产品推广渠道有哪些方式
  • 如何提升网站alexa排名网络舆情处理公司
  • 做电商需要什么站长工具seo下载
  • sm做任务的网站有哪些宁波网站推广哪家公司好
  • wordpress 下载模板站中国培训网是国家公认的吗
  • 浦东网站开发培训关键词排名优化价格
  • 新疆住房建设厅网站seo研究中心怎么样
  • 快速做网站费用长春seo主管
  • 企业网站推广的方法有哪几种关键词优化按天计费
  • 做外账要登什么网站百度竞价推广怎么做效果好
  • 做网站膜网站怎么做我在百度下的订单如何查询
  • Wordpress加720云vr企业seo案例
  • 做百度关键词网站seox
  • 网站维护能自己做吗百度推广上班怎么样
  • 用什么编程语言做网站好百度云登陆首页
  • 深圳网站建设优化培训学校招生营销方案
  • ftp 网站管理福州seo代理商
  • 吉林华商建设集团网站网络营销与管理专业是干什么的
  • 大网站前端怎么做的厦门网站建设公司
  • 莱芜市网站建设市场调研的步骤
  • 做网站后台网站推广方法大全
  • seo广告投放朔州seo