前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HDU 6514 Monitor 二维前缀和

HDU 6514 Monitor 二维前缀和

作者头像
用户2965768
发布2019-05-07 14:24:10
5450
发布2019-05-07 14:24:10
举报
文章被收录于专栏:wymwym

Monitor

s[i][j]表示i 行j列所有面积之和,二维前缀和

代码语言:javascript
复制
#include <bits/stdc++.h>
using namespace std;
int main()
{
	int n, m, q, a, b, c, d;
	while (scanf("%d%d", &n, &m) > 0)
	{
		int s[n + 5][m + 5];
		memset(s, 0, sizeof(s));
		scanf("%d", &q);
		while (q--)
		{
			scanf("%d%d%d%d", &a, &b, &c, &d);
			s[a][b]++;
			s[c+1][d+1]++;
			s[a][d+1]--;
			s[c+1][b]--;
		}	
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++)
				s[i][j] = s[i][j] + s[i-1][j] + s[i][j-1] - s[i-1][j-1]; 
	
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++)
				if(s[i][j]>0)
					s[i][j] = 1;

		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++)
				s[i][j] = s[i][j] + s[i-1][j] + s[i][j-1] - s[i-1][j-1];

		scanf("%d", &q);
		while (q--)
		{
			scanf("%d%d%d%d", &a, &b, &c, &d);
			if ((c - a + 1) * (d - b + 1) == s[c][d] - s[a - 1][d] - s[c][b - 1] + s[a - 1][b - 1])
				printf("YES\n");
			else
				printf("NO\n");
		}
	}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年04月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档