線段樹區間合併+掃瞄線
題目:求n個矩形面積並
#includeusing namespace std;
typedef long long ll;
const int n=1e6+5;
int t[n*2]; //標記數量
int vis[n+2]; //標記陣列
void update(int root,int kl,int kr,int num,int l=1,int r=n)
int mid=(l+r)/2;
if(kl<=mid)update(root*2,kl,kr,num,l,mid);
if(kr>mid)update(root*2+1,kl,kr,num,mid+1,r);
t[root]=t[root*2]+t[root*2+1];
}//值為其兩個兒子之和
struct nodep[2200];
bool cmp(node a,node b)
int main();//下邊
p[i+n]=node;//上邊
}sort(p+1,p+2*n+1,cmp); //把邊從下到上排序
memset(vis,0,sizeof(vis));
ll ans=0; //總面積初始化
for(int i=1;i<=2*n;i++)//根1,當前邊左值,右值,標記
printf("%lld\n",ans);
}puts("*");
}
線段樹 掃瞄線區間模板
線段樹 掃瞄線基礎模板 掃瞄線與普通的線段樹區別要認清,這裡線是連續的,其他的型別單點是離散的 include include include using namespace std int n const int maxn 10000 struct node void get int a,int ...
線段樹 掃瞄線
pku 1151 hdu1542 atlantis 矩形面積並 題意 給出n個矩形,每個矩形給出左下角座標,右上角座標。然後求矩形並的總面積 思路 浮點數先要離散化 然後把矩形分成兩條邊,上邊和下邊,對橫軸建樹,然後從下到上掃瞄上去,用cnt表示該區間下邊比上邊多幾個,sum代表該區間內被覆蓋的線段...
掃瞄線 線段樹
問題描述 小明的家旁邊有條河流,但最近,周圍的三個工廠開始向這條河排放汙水,這條河的一部分被汙染了,被乙個工廠汙染的部分可以看做乙個矩形,現在小明想知道這條河被汙染的面積是多少。輸入 第一行乙個整數t,表示有多少組資料,之後每一組資料報括三行,每一行有lx,ly,rx,ry四個整數,表示被乙個工廠汙...