Problem Description
There are many rook on a chessboard, a rook can attack the row and column it belongs, including its own place.
There are also many queries, each query gives a rectangle on the chess board, and asks whether every grid in the rectangle will be attacked by any rook?
There are also many queries, each query gives a rectangle on the chess board, and asks whether every grid in the rectangle will be attacked by any rook?
Input
The first line of the input is a integer
T
, meaning that there are
T
test cases.
Every test cases begin with four integers n,m,K,Q .
K is the number of Rook, Q is the number of queries.
Then K lines follow, each contain two integers x,y describing the coordinate of Rook.
Then Q lines follow, each contain four integers x1,y1,x2,y2 describing the left-down and right-up coordinates of query.
1≤n,m,K,Q≤100,000 .
1≤x≤n,1≤y≤m .
1≤x1≤x2≤n,1≤y1≤y2≤m .
Every test cases begin with four integers n,m,K,Q .
K is the number of Rook, Q is the number of queries.
Then K lines follow, each contain two integers x,y describing the coordinate of Rook.
Then Q lines follow, each contain four integers x1,y1,x2,y2 describing the left-down and right-up coordinates of query.
1≤n,m,K,Q≤100,000 .
1≤x≤n,1≤y≤m .
1≤x1≤x2≤n,1≤y1≤y2≤m .
Output
For every query output "Yes" or "No" as mentioned above.
Sample Input
2 2 2 1 2 1 1 1 1 1 2 2 1 2 2 2 2 2 1 1 1 1 2 2 1 2 2
Sample Output
Yes NoYes
有一个n*m的棋盘,有k个车(和象棋里的车一样),有q次询问,问车是否能将给出的矩形的所有格子打到,给出车的坐标,矩形左下角的坐标和右上角的坐标.cow[i]表示以第i行结尾的矩形,col[i]表示以第i列结尾的矩形.
代码如下:
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; int cow[100010]; int col[100010]; int main() { int n,m,k,q; int t; scanf("%d",&t); while(t--) { scanf("%d%d%d%d",&n,&m,&k,&q); memset(cow,0,sizeof(cow)); memset(col,0,sizeof(col)); int i;int x,y; for(i=0;i<k;i++) { scanf("%d%d",&x,&y); cow[x]=col[y]=1; } for(i=1;i<=n;i++) { if(cow[i]) cow[i]+=cow[i-1]; } for(i=1;i<=m;i++) { if(col[i]) col[i]+=col[i-1]; } int x1,x2,y1,y2; for(i=1;i<=q;i++) { scanf("%d%d%d%d",&x1,&y1,&x2,&y2); if(cow[x2]>=x2-x1+1||col[y2]>=y2-y1+1) printf("Yes\n"); else printf("No\n"); } } }