【NJUST5480】Conturbatio

来源:互联网 发布:比较丧的日剧知乎 编辑:程序博客网 时间:2024/06/05 10:47

                                   Conturbatio

Time Limit: 6000/3000 MS (Java/Others)

Memory Limit: 65536/65536 K (Java/Others)

[显示标签]

[]

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?

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\leq n , m , K , Q \leq 100,000$.

$1\leq x \leq n , 1 \leq y \leq m$.

$1\leq x1 \leq x2 \leq n , 1 \leq y1 \leq y2 \leq m$.

Output

For every query output "Yes" or "No" as mentioned above.

Sample Input

22 2 1 21 11 1 1 22 1 2 22 2 2 11 11 22 1 2 2

Sample Output

YesNoYes
Hint
Huge input, scanf recommended.

Hint

hujie

Source

BestCoder Round #57 (div.2)

一道比较好的思维题目

#include<cstdio>#include<iostream>#include<cmath>#include<cstring>#include<algorithm>using namespace std;const int N = 100000+10;int row[N],col[N];int main() {int T;scanf("%d",&T);while(T--) {memset(row,0,sizeof(row));memset(col,0,sizeof(col));int n,m,k,q;scanf("%d%d%d%d",&n,&m,&k,&q);for(int i=0; i<k; i++) {int a,b;scanf("%d%d",&a,&b);row[a]=1;col[b]=1;}for(int i=1; i<=n; i++) {row[i]=row[i]+row[i-1];}for(int i=1; i<=m; i++) {col[i]=col[i]+col[i-1];}while(q--) {int x1,y1,x2,y2;scanf("%d%d%d%d",&x1,&y1,&x2,&y2);if(x2-x1+1==row[x2]-row[x1-1]||y2-y1+1==col[y2]-col[y1-1])printf("Yes\n");elseprintf("No\n");}}return 0;}
题目地址:http://acm.hust.edu.cn/vjudge/contest/127335#problem/A



0 0
原创粉丝点击