hdu 4007 Dave 求矩形圈點最大值

2021-06-22 19:13:38 字數 954 閱讀 3158

對於每個點,擴成乙個矩形,變成求最大重疊層數;

注意邊界的處理,這裡是橫縱均加一;

可能在邊界上會產生一些問題,在排序的時候修正;

#include#include#include#include#include#include#include#include#includeusing namespace std;

#define inf 0x3f3f3f3f

const int dir[4][2]=;

#define maxn 2005

struct tree

tree[maxn*4];

struct line

line[maxn];

bool cmp(line a,line b)//sort排序的函式

int y[maxn];//記錄y座標

void build(int l,int r,int root)

void calen(int root)

void update(int root,struct line e)

if(e.y2<=tree[root<<1].rf)update(root<<1,e);

else if(e.y1>=tree[root<<1|1].lf)update(root<<1|1,e);

else

calen(root);

}int main()

k--;

sort(line+1,line+k+1,cmp);

sort(y+1,y+k+1);

int mm;

mm=unique(y+1,y+1+k)-y-1;

build(1,mm,1);

int ans=0;

for(i=1;i<=k;i++)

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

} return 0;

}

hdu 1542 Atlantis(求矩形面積並)

分別記錄x座標和y座標,將其分別按照從左到有的方向排序。然後對於乙個輸入的矩形的x,y座標範圍內的下標進行標記。以兩個相鄰的座標為最小單位分割圖形,最後求總面積。include include include define n 205 int mark n n double a n b n stru...

hdu 2830 逐行掃瞄dp求最大完全矩形

求最大完全矩形的基本思想就是以每一行作為底,因為任意列可以呼叫,我們記錄當前行為底的時候以某乙個點的高度,然後排序,從大到小的排序,然後掃瞄到後面每乙個點的高度為矩形高度的最大矩形面積就是h i i 具體步驟如下 很好的思路 include include include include defin...

HDU 1255 覆蓋的面積(線段樹求矩形面積交)

題意 給出n個矩形,求出至少被兩塊矩形覆蓋的面積。思路 跟面積並類似的做法,不同的是每個節點要額外維護乙個至少被覆蓋兩次的長度dcnt,此外還是要維護至少覆蓋一次的長度cnt,然後每次由當前結點的cover標記和子節點的dcnt,cnt值來推出當前結點的dcnt,cnt值。include inclu...