HYSBZ 1935 Tree 園丁的煩惱

2021-09-26 20:26:54 字數 1882 閱讀 6386

很久很久以前,在遙遠的大陸上有乙個美麗的國家。統治著這個美麗國家的國王是乙個園藝愛好者,在他的****裡種植著各種奇花異草。有一天國王漫步在花園裡,若有所思,他問乙個園丁道: 「最近我在思索乙個問題,如果我們把花壇擺成六個六角形,那麼……」 「那麼本質上它是乙個深度優先搜尋,陛下」,園丁深深地向國王鞠了一躬。 「嗯……我聽說有一種怪物叫九頭蛇,它非常貪吃蘋果樹……」 「是的,顯然這是一道經典的動態規劃題,早在n元2023年我們就已經發現了其中的奧秘了,陛下」。 「該死的,你究竟是什麼來頭?」 「陛下息怒,幹我們的這行經常莫名其妙地被問到和oi有關的題目,我也是為了預防萬一啊!」 王者的尊嚴受到了傷害,這是不可容忍的。看來一般的難題是難不倒這位園丁的,國王最後打算用車輪戰來消耗他的實力: 「年輕人,在我的花園裡的每一棵樹可以用乙個整數座標來表示,一會兒,我的騎士們會來輪番詢問你某乙個矩陣內有多少樹,如果你不能立即答對,你就準備走人吧!」說完,國王氣呼呼地先走了。 這下輪到園丁傻眼了,他沒有準備過這樣的問題。所幸的是,作為「全國園丁保護聯盟」的會長——你,可以成為他的最後一根救命稻草。

input

第一行有兩個整數n,m(0≤n≤500000,1≤m≤500000)。n代表****的樹木的總數,m代表騎士們詢問的次數。 檔案接下來的n行,每行都有兩個整數xi,yi,代表第i棵樹的座標(0≤xi,yi≤10000000)。 檔案的最後m行,每行都有四個整數aj,bj,cj,dj,表示第j次詢問,其中所問的矩形以(aj,bj)為左下座標,以(cj,dj)為右上座標。

output

共輸出m行,每行乙個整數,即回答國王以(aj,bj)和(cj,dj)為界的矩形裡有多少棵樹。

可以用cdq分治的板子,其實就是乙個二維偏序問題。

#include

using namespace std;

#define lowbit(x) x&(-x)

const

int n =

5e5+5;

struct node

}order[n*5]

, tmp[n*5]

;int len, n, m, toplimit =-1

;int ans[n]

, sum[

10000100];

void

update

(int x,

int val)

}int

query

(int x)

return res;

}void

sum_clear

(int x)

}void

cdq(

int l,

int r)

else

}while

(q <= r)

for(

int i = l; i < p; i++

)while

(p <= mid) tmp[cnt++

]= order[p++];

for(

int i = l; i <= r; i++

) order[i]

= tmp[i]

;// cout<}

void

addnode

(int x,

int y,

int tp,

int val)

intmain()

for(

int i =

1; i <= m; i++

)cdq(1

, len)

;for

(int i =

1; i <= m; i++

)printf

("%d\n"

, ans[i]);

}return0;

}

1935 查詢學生資訊

時間限制 1 sec 記憶體限制 32 mb 提交 1546 解決 347 提交 狀態 討論版 命題人 外部匯入 輸入n個學生的資訊,然後進行查詢。輸入的第一行為n,即學生的個數 n 1000 接下來的n行包括n個學生的資訊,資訊格式如下 01 李江 男 21 02 劉唐 男 23 03 張軍 男 ...

bzoj 1935(樹狀陣列)

傳送門 題解 由於是靜態問題所以可以離線處理,所有點 詢問拆成4個 按x排序,二維可以轉成一維,相當於每次query到的就是當前已插入的點,而只有這些點能對query的返回值造成貢獻。p.s.對於x座標相同的插入 詢問,要考慮這幾個操作的先後順序 include using namespace st...

poj 1935 搜尋 回溯

解題思路 先我們考慮從源點出發到所有自己想要經過的點然後在回到源點sum,顯然每條邊都必須經過源點 這個我們可以一次dfs求出 但題目的意思是可以不用回到源點,那麼我們可以再求源點到所有要經過的點的最遠距離ans,於是答案便是sum ans.這道題的思路確實是很巧妙,一開始我還是在想如何表示從某一點...