hdu 5480Conturbatio
来源:互联网 发布:在职研究生网络教育 编辑:程序博客网 时间:2024/06/05 10:31
问题描述
在一个n×m的国际象棋棋盘上有很多车(Rook),其中车可以攻击他所属的一行或一列,包括它自己所在的位置。现在还有很多询问,每次询问给定一个棋盘内部的矩形,问矩形内部的所有格子是否都被车攻击到?
输入描述
输入文件包含多组数据,第一行为数据组数T。每组数据有4个正整数n,m,K,Q。K为车的数量,Q为询问的个数。接下来有K行,每行两个整数x,y , 表示车所在的坐标。再接下来有Q行,每行4个整数x1,y1,x2,y2,表示询问的矩形的左下角与右上角的坐标。1≤n,m,K,Q≤100,000.1≤x≤n,1≤y≤m.1≤x1≤x2≤n,1≤y1≤y2≤m.
输出描述
对于每组询问,输出Yes或No。
输入样例
22 2 1 21 11 1 1 22 1 2 22 2 2 11 11 22 1 2 2
输出样例
YesNoYes
一个矩形要被全部攻击到要么所有列都有车要么所有行都有车,记录一下每列每行是否有车,算下前缀和。
#include <cstdio>#include <cstring>using namespace std;const int N = 1e5 + 10;int row[N], col[N];int n, m, k, q, t;int main(){scanf("%d", &t);while (t--){memset(row, 0, sizeof(row));memset(col, 0, sizeof(col));scanf("%d%d%d%d", &n, &m, &k, &q);int x, y, x1, y1, x2, y2;for (int i = 1; i <= k; i++){scanf("%d%d", &x, &y);row[x] = col[y] = 1;}for (int i = 2; i <= n; i++) row[i] += row[i - 1];for (int i = 2; i <= m; i++) col[i] += col[i - 1];for (int i = 1; i <= q; i++){scanf("%d%d%d%d", &x1, &y1, &x2, &y2);if ((y2 - y1 + 1) == (col[y2] - col[y1 - 1]))printf("Yes\n");else if ((x2 - x1 + 1) == (row[x2] - row[x1 - 1]))printf("Yes\n");else printf("No\n");}}return 0;}
0 0
- HDU 5480 Conturbatio
- Hdu 5480 Conturbatio
- hdu 5480Conturbatio
- HDU 5480 Conturbatio
- hdu 5480 Conturbatio(水)
- hdu 5480 Conturbatio【模拟】
- hdu 5480 Conturbatio
- 【HDU 5480 Conturbatio】
- HDU 5480 Conturbatio
- HDU Problem 5480 Conturbatio
- hdu 5480 Conturbatio 线段树
- HDU 5480:Conturbatio 前缀和
- 【前缀和】hdu 5480 Conturbatio
- hdu 5480 Conturbatio 区间和
- HDU 5480 Conturbatio 树状数组
- HDU 5480 Conturbatio (前缀和)
- 前缀和 hdu 5480 (Conturbatio)
- HDU 5480 Conturbatio(前缀和)
- 1272:小希的迷宫
- 工具类
- 1.Python补充_序列的方法
- ASP.NET页面内传递参数方法
- 删除绿色版MySq
- hdu 5480Conturbatio
- C/C++:用数组构造队列。
- GOF 23 设计模式之 状态模式
- 日经春秋 20151005
- sublime快捷键
- vmware workstation12 pro
- C#(ASP.Net)获取当前路径的方法集合
- Building for UN
- hdu 5481 Desiderium