提供傳入vector的建構函式,可高效查詢圓形區域的點列表。每塊葉子區域點數限制為總數的根號級別。
// hihocoder - 1421
//quadtree 叫四叉樹,看起來類似於區域線段樹
#include
#include
#include
#include
using
namespace std;
struct node
void
print()
cout << endl;}}
;class
quadtree
;quadtree::
quadtree()
quadtree::
quadtree
(const vectorint,
int>>
& p)
for(
int i =
0; i < p.
size()
; i++
)push
(root, p, range_x, range_y)
;split
(root);}
quadtree::
quadtree
(const vectorint,
int>>
& p,
int set_limit)
for(
int i =
0; i < p.
size()
; i++
)push
(root, p, range_x, range_y)
;split
(root);}
quadtree::
~quadtree()
inline
bool quadtree::
is_inrange
(int pos, pair<
int,
int>range)
inline
bool quadtree::
is_inrange
(pair<
int,
int>point, pair<
int,
int>o,
int r)
inline
bool quadtree::
is_inrange
(node* rt, pair<
int,
int>o,
int r)
void quadtree::
del(node* rt)
void quadtree::
split
(node* rt)
else
if(rt-
>ul-
>p.
size()
> limit)
// ur
push
(rt-
>ur, rt-
>p,
make_pair
(mid_x +
1, rt-
>range_x.second)
,make_pair
(mid_y +
1, rt-
>range_y.second));
if(rt-
>ur-
>p.
size()
==0)else
if(rt-
>ur-
>p.
size()
> limit)
// dl
push
(rt-
>dl, rt-
>p,
make_pair
(rt-
>range_x.first, mid_x)
,make_pair
(rt-
>range_y.first, mid_y));
if(rt-
>dl-
>p.
size()
==0)else
if(rt-
>dl-
>p.
size()
> limit)
// dr
push
(rt-
>dr, rt-
>p,
make_pair
(mid_x +
1, rt-
>range_x.second)
,make_pair
(rt-
>range_y.first, mid_y));
if(rt-
>dr-
>p.
size()
==0)else
if(rt-
>dr-
>p.
size()
> limit)
}void quadtree::
push
(node *rt,
const vectorint,
int>>
& p, pair<
int,
int>range_x, pair<
int,
int>range_y)
rt->range_x = range_x;
rt->range_y = range_y;
}void quadtree::
getpointlist
(node* rt, pair<
int,
int>o,
int r, vectorint,
int>>
& ans)
return;}
if(rt-
>p.
size()
<= limit)
}return;}
if(rt-
>dl !=
null)if
(rt-
>dr !=
null)if
(rt-
>ul !=
null)if
(rt-
>ur !=
null)}
vectorint,
int>> quadtree::
getpointlist
(pair<
int,
int>o,
int r)
void quadtree::
add(pair<
int,
int>point)
// not ok
intmain()
quadtree ans =
quadtree
(p);
while
(m--
)}
hihoCoder1687 向量叉積
時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 給定平面上n個點p1 x1,y1 p2 x2,y2 pn xn,yn 請你從中找到兩個不同的點pi和pj滿足 其他所有點都在pi和pj連線的同一側 可以在連線上 如果有多組答案滿足條件,你可以輸出任意一組。第一行包含乙個整數n...
hihocoder 1317 搜尋四 跳舞鏈
題目鏈結 題意 題解 dfs就能過吧.在選取的時候 把選取的這一行,佔據的列,列的權值 1 按列搜 在搜第col列的時候,前i 1列保證有且只有乙個行佔據著 如果選擇的某一行,在前col 1列有格仔 則不能選它 否則修改這一列以及這一列後面的列的權值 在搜某一列的時候,如果發現它的權值為1 則不用搜...
hihocoder收割機14第四題
時間限制 20000ms 單點時限 2000ms 記憶體限制 256mb 描述主宰尤涅若擁有一招非常厲害的招式 劍刃風暴,無論是戰士還是法師,都害怕尤涅若的武士刀劍技 現在戰場上有n名敵對英雄,他們的位置分別為 xi,yi 而劍刃風暴的傷害範圍是乙個半徑為r的圓形,尤涅若可以選擇乙個座標作為劍刃風暴...