题目链接:点击查看

题目大意:给出一个n*m的矩阵,开始全部初始化为0,然后给出一系列的小矩阵的范围,小矩阵中的格子全部变为1,最后再给出一些查询,查询矩阵范围内是否所有的格子都是1,是的话输出yes,否则输出no

题目分析:二维差分+二维前缀和,

这里放一篇个人觉得不错的差分博客:点击查看

然后二维前缀和不多赘述了,很早之前就已经掌握了的知识了。

因为初始化全部为0,我们在将一系列的小矩阵变为1的过程中,并不需要全部变为1,只需要将对角线上的点分别赋值表示差分即可,等操作完毕后,对差分的数组求一下前缀和,这个时候每个点(i,j)所表示的值,是该点相对于0来说变化了多少,在这个题目中,我们可以保证每个点的值都是大于等于零的,因为在区间内的操作都是只加不减,随后将每个点的值都改成0或1,原先大于等于1的全部变为1即可,再求一次前缀和,这个时候输入区间后只需要判断区间的大小(即面积)和前缀和是否相等就好了

代码简洁,直接上代码了:

#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<stack>
#include<queue>
#include<map>
#include<cmath>
#include<set>
#include<sstream>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=1e7+100;int a[N];int n,m;int getid(int i,int j)
{if(i==0||j==0||i>n||j>m)//考虑越界情况,如果越界返回0,因为a[0]正常情况下是访问不到的,所以让他一直等于0即可return 0;return (i-1)*m+j;
}void update(int i,int j,int val)
{if(getid(i,j)==0)//如果越界就不需要更新了return;a[getid(i,j)]+=val;
}int main()
{
//  freopen("input.txt","r",stdin);while(scanf("%d%d",&n,&m)!=EOF){for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)a[getid(i,j)]=0;int t;scanf("%d",&t);while(t--){int x,y,xx,yy;scanf("%d%d%d%d",&x,&y,&xx,&yy);//维护差分区间update(x,y,1);update(xx+1,yy+1,1);update(x,yy+1,-1);update(xx+1,y,-1);}for(int i=1;i<=n;i++)//前缀和for(int j=1;j<=m;j++)a[getid(i,j)]+=a[getid(i-1,j)]+a[getid(i,j-1)]-a[getid(i-1,j-1)];for(int i=1;i<=n;i++)//转换为0和1for(int j=1;j<=m;j++)a[getid(i,j)]=a[getid(i,j)]?1:0;for(int i=1;i<=n;i++)//前缀和for(int j=1;j<=m;j++)a[getid(i,j)]+=a[getid(i-1,j)]+a[getid(i,j-1)]-a[getid(i-1,j-1)];scanf("%d",&t);while(t--){int x,y,xx,yy;scanf("%d%d%d%d",&x,&y,&xx,&yy);int temp1=(xx-x+1)*(yy-y+1);//区间大小int temp2=a[getid(xx,yy)]-a[getid(xx,y-1)]-a[getid(x-1,yy)]+a[getid(x-1,y-1)];//前缀和大小if(temp1==temp2)cout<<"YES"<<endl;elsecout<<"NO"<<endl;    }}return 0;
}

HDU - 6514 Monitor(二维差分)相关推荐

  1. 一维前缀和,二维前缀和,一维差分,二维差分(翻译)

    练习一道题目 输入一个长度为n的整数序列. 接下来再输入m个询问,每个询问输入一对l, r. 对于每个询问,输出原序列中从第l个数到第r个数的和. 输入格式 第一行包含两个整数n和m. 第二行包含n个 ...

  2. 2020ICPC·小米 网络选拔赛第一场(Matrix Subtraction (二维差分))

    题目传送门 Matrix Subtraction 题目大意 给你一个 n × m n×m n×m的矩阵,每次可从矩阵中选择一个大小为 a × b a×b a×b的矩阵,使得该子矩阵的值全部减一 求最后 ...

  3. 激光导弹Gundam Unicorn(二维前缀和and二维差分)

    激光炸弹和Gundam Unicorn是二维前缀和和二位差分的综合应用. 首先是一二维差分,前缀和的模板前缀和与差分 图文并茂 超级详细整理(全网最通俗易懂)_林深不见鹿 的博客-CSDN博客_前缀和 ...

  4. 差分——(2)二维差分

    前面部分我们介绍了一维差分,https://blog.csdn.net/justidle/article/details/103761632.下面我们扩展一下,来介绍二维差分. 什么是二维差分 我们有 ...

  5. [选拔赛2 NOIP2018雅礼集训 Day3 u,v,w]玩个三角形(二维差分),玩个球(状压DP+map),玩个树(树上DP)

    文章目录 T1:玩个三角形 title solution code T2:玩个球 title solution code T3:玩个树 title solution code T1:玩个三角形 tit ...

  6. LeetCode 2132. 用邮票贴满网格图(DP/二维差分)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个 m x n 的二进制矩阵 grid ,每个格子要么为 0 (空)要么为 1 (被占据). 给你邮票的尺寸为 stampHeight x stam ...

  7. ~~二维差分(附模板题)

    模板 给以(x1, y1)为左上角,(x2, y2)为右下角的子矩阵中的所有元素加上c: S[x1, y1] += c, S[x2 + 1, y1] -= c, S[x1, y2 + 1] -= c, ...

  8. HDU 5517---Triple(二维树状数组)

    题目链接 Problem Description Given the finite multi-set A of n pairs of integers, an another finite mult ...

  9. Hdu 1794 【二维成段更新】.cpp

    题意: 给出一个n*n的矩阵和m个数,从m个数中选几个数填入矩阵中值为0的空格中,使矩阵的和最大. 矩阵的和的定义是:所有子矩阵的数的和的和..   思路: 要想矩阵的和最大..应该使m个数中值大的数 ...

最新文章

  1. 【收藏清单】AI学习资料汇总——你想要的AI资源,这里都有
  2. 删除logs mysql_关于删除MySQL Logs的问题记录_MySQL
  3. PHP curl_setopt函数用法介绍中篇
  4. 删除二叉搜索树中的节点
  5. CentOS7下Elasticsearch集群部署记录
  6. apt-get 获取源码的方法
  7. SpringMVC对日期类型的转换
  8. 研究cegui,写脚本
  9. 前端获取小程序二维码参数_微信小程序实现带参分享并消息卡片获取参数
  10. 二级分类php代码,php smarty 二级分类代码和模版循环例子
  11. 结合实际案例讲解系统分析方法
  12. 分类模型confusion matrix混淆矩阵可视化
  13. 荣耀XIO升级鸿蒙,距断供不到10天 华为大招来了:不止鸿蒙
  14. Mac终端应用变身文件 MD5/SHA1 校验工具
  15. 【论文解读】(如何微调BERT?) How to Fine-Tune BERT for Text Classification?
  16. word文件图标无法显示的问题
  17. 命令行 修复系统_让我们修复旧的命令行
  18. Win10连接投影仪画面不是全屏怎么办
  19. 哔哩哔哩html无法显示,哔哩哔哩视频显示在Github的Makedown博客页方法
  20. 365天挑战LeetCode1000题——Day 154 Knight

热门文章

  1. MySQL高级 - 锁 - MyISAM表锁 - 小结
  2. ConcurrentHashMap的源码分析-JDK1.7和Jdk1.8版本的变化
  3. MyBatis 插件怎么编写和使用?原理是什么?
  4. Spring框架版本命名规则
  5. HDFS的API操作-小文件的合并
  6. 数据库-优化-数据库结构的优化-数据类型
  7. 数据库-优化-通过慢查日志查询有问题的sql
  8. 口令加密算法 - Java加密与安全
  9. cfg桩设备型号_试桩、试验桩、工程桩是一回事吗?
  10. php paypal订单号查询,php – 在交易后从PayPal获取信息