CDOJ 1071 秋實大哥下棋

2021-07-10 19:33:24 字數 1517 閱讀 1607

limit 1s 65535kb

勝負胸中料已明,又從堂上出奇兵。秋實大哥是乙個下棋好手,獨孤求敗的他覺得下棋已經無法滿足他了,他開始研究一種新的玩法。

在乙個n×m的棋盤上,放置了k個車,並且他在棋盤上標出了q個矩形,表示矩形內部是戰略要地。秋實大哥要求乙個矩形內的每乙個格仔,都至少能被一輛在矩形內的車攻擊到,那麼這個矩形就是被完整保護的。

現在秋實大哥想知道每乙個矩形是否被完整保護。

input

第一行包含四個整數n,m,k,q,表示棋盤的大小,車的數量以及矩形的數量。

接來下k行,每行包含兩個整數x,y,表示有一輛車位於從左往右第x列,從下往上第y行。

接下來q行,每行包含四個整數x1,y1,x2,y2,表示乙個矩形的左下角和右上角座標。

1≤n,m≤105,1≤k,q≤2⋅105,1≤x1≤x2≤105,1≤y1≤y2≤105,1≤x≤105,1≤y≤105。

output

輸出q行,對於每一次詢問,這個矩形若被完整保護了輸出"yes",否則輸出"no"。

sameple input

4 3 3 3

1 13 2

2 32 3 2 3

2 1 3 3

1 2 2 3

sameple output

yesyes

no題解

好難啊,完全不會

所以看題解,問大神,折騰了好久終於敢自己寫一發了……

竟然一發過,開心……

但是題解很不好表述啊,怎麼說,x,y分開進行,比如x軸方向掃瞄,在y軸上建線段樹,線段樹維護[y1,y2]區間內車的x的最小值。

每次掃瞄到乙個矩形的右邊,就詢問[y1,y2]區間中車的x的最小值,如果x小於該矩形的左邊,說明縱座標在[y1,y2]區間的車至少一輛不在矩形內,覆蓋失敗

y軸一樣

#include#includeusing namespace std;

const int maxn=1e5;

const int max_size=1<<18;

const int inf=1e7;

struct carriage

;carriage car[2*maxn+5];

struct retangular

;retangular ret[2*maxn+5];

vector x_car[maxn+5];

vector y_car[maxn+5];

vector rside[maxn+5];

vector hside[maxn+5];

int x_tree[max_size+5];

int y_tree[max_size+5];

int ans[2*maxn+5];

void update(int tree,int x,int m,int sz)

}int query(int tree,int a,int b,int k,int l,int r)

{ if (a<=l && r<=b) return tree[k];

else if (r

uestcOJ秋實大哥與花 線段樹

秋實大哥是乙個儒雅之人,晝聽笙歌夜醉眠,若非月下即花前。所以秋實大哥精心照料了很多花朵。現在所有的花朵排成了一行,每朵花有乙個愉悅值。秋實大哥每天要對著某一段連續的花朵歌唱,然後這些花朵的愉悅值都會增加乙個相同的值vv vv可能為負 同時他想知道每次他唱完歌後這一段連續的花朵的愉悅值總和是多少。第一...

UESTC 1073 秋實大哥與線段樹

uestc 1073 學習本無底,前進莫徬徨。秋實大哥對一旁玩手機的學弟說道。秋實大哥是乙個愛學習的人,今天他剛剛學習了線段樹這個資料結構。為了檢驗自己的掌握程度,秋實大哥給自己出了乙個題,同時邀請大家一起來作。秋實大哥的題目要求你維護乙個序列,支援兩種操作 一種是修改某乙個元素的值 一種是詢問一段...

ZCMU1783 秋實大哥與快餐店

題目大意 先輸入n,然後儲存這n個數字,然後輸入m,表示m次操作。有兩種操作,第一種是儲存輸入的乙個數字,第二種是輸入乙個數字,找儲存的數字和這個數字異或和最大的數字,輸出這個儲存的數字。n,m 100000 輸入的數字 1000000 前言 講這道題前先 一下字典樹。如果有n個小寫字母,然後有m個...