题意:如果一个点,则这点的横竖皆被占领,询问矩阵是否全被占领.
思路:将被占领的x,y标记为1,用x表示1 - i的和
如果x轴的差为 x2 - x1 + 1则表示全被占领,y轴同理
#include#include #include #include #include #include typedef long long ll;using namespace std;const int N = 1e5 + 5;int x[N];int y[N];int main(){ int t; int n,m; int p,q; int x1,x2,y1,y2; scanf("%d",&t); while(t--) { scanf("%d%d%d%d",&n,&m,&p,&q); memset(x,0,sizeof(x)); memset(y,0,sizeof(y)); for(int i = 1;i <= p;i++) { scanf("%d%d",&x1,&y1); x[x1]= y[y1] = 1; } for(int i = 2;i <= n;i++) x[i] += x[i-1]; for(int i = 2;i <= m;i++) y[i] += y[i-1]; for(int i = 1;i <= q;i++) { scanf("%d%d%d%d",&x1,&y1,&x2,&y2); if(x[x2] - x[x1-1] ==(x2 - x1 + 1) || y[y2] - y[y1-1] ==(y2 - y1 + 1)) printf("Yes\n"); else printf("No\n"); } } return 0;}