HDU 5091 線段樹掃瞄線

2021-09-22 11:20:42 字數 538 閱讀 4958

給出n個點。和乙個w*h的矩形

給出n個點的座標,求該矩形最多能夠覆蓋多少個點

對每乙個點point(x。y)右邊生成相應的點(x+w,y)值為-1;

縱向建立線段樹,從左到右掃瞄線掃一遍。遇到點則用該點的權值更新區間(y,y+h)

#include "stdio.h"

#include "string.h"

#include "algorithm"

using namespace std;

struct mark

mark[30010];

struct node

data[200010];

bool cmp(mark a, mark b)

int max(int a,int b)

data[k].x=max(data[k*2].x,data[k*2+1].x);

}int main()

printf("%d\n",ans);

}return 0;

}

hdu5091(掃瞄線 線段樹)

題意 給n個點,和長w寬h的矩形,問矩形最多能包含多少個點。思路 掃瞄線 線段樹,首先將座標轉化成非負數,對於每個點 x,y 標記為1,生成乙個 x w,y 的點,標記為 1,然後將y軸建立線段樹,維護乙個最大值即可。如不不明白的話,畫個圖,理解一下就好了。如下 include include in...

HDU 5091 掃瞄線 線段樹優化

做法,將讀入的每個點 x,y 看做乙個以該點為左上角寬w高h的矩形,然後將矩形看做兩條平行y軸 起點y h,終點y 線,橫座標分別為 x x w 然後可用經典的掃瞄線演算法求解該題,即找出所有矩形重疊的最多次數,即所求值 證明 都在乙個矩形內的點必定他們的上述規定的矩形都兩兩相交,而矩形兩兩相交必然...

hdu4007 線段樹掃瞄線

用變長為r的正方形最多能框住幾個點,線段樹,離散化,掃瞄線,延時標記lz include include include include include define n 2005 define inf 1 30 const double eps 1e 12 const double pi acos...