poj1436(线段树lazy标记)
2016-09-21 22:35
309 查看
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn=8002; bool vis[maxn][maxn]; struct node{ int y1,y2,x; }s[maxn]; bool cmp(node a,node b) { return a.x<b.x; } int cov[maxn<<3]; void Pushdown(int p) { if(cov[p]) { cov[p<<1]=cov[p<<1|1]=cov[p]; //覆盖的线段颜色 cov[p]=0; } } void Update(int p,int l,int r,int x,int y,int cr) //cr为颜色编号 { if(x<=l&&y>=r) { cov[p]=cr; return; } Pushdown(p); int mid=(l+r)/2; if(x<=mid) Update(p<<1,l,mid,x,y,cr);//切记 if(y>mid) Update(p<<1|1,mid+1,r,x,y,cr); } void Query(int p,int id,int l,int r,int x,int y) { if(x<=l&&y>=r){ if(cov[p]) { vis[cov[p]][id]=true; return; } } if(l==r) return; //要加,否则无法调用Pushdown(p); Pushdown(p); int mid=(l+r)/2; if(x<=mid) Query(p<<1,id,l,mid,x,y); if(y>mid) Query(p<<1|1,id,mid+1,r,x,y); } int main() { int t; scanf("%d",&t); while(t--) { int n; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d%d%d",&s[i].y1,&s[i].y2,&s[i].x); s[i].y1*=2; s[i].y2*=2; } sort(s+1,s+1+n,cmp); int sum=0; memset(cov,0,sizeof(cov)); memset(vis,false,sizeof(vis)); for(int i=1;i<=n;i++) { Query(1,i,0,maxn*2,s[i].y1,s[i].y2); Update(1,0,maxn*2,s[i].y1,s[i].y2,i); } for(int i=1;i<=n;i++) for(int j=i+1;j<=n;j++) { if(vis[i][j]) { //cout<<i<<' '<<j<<endl; for(int k=j+1;k<=n;k++) if(vis[i][k]&&vis[j][k]) sum++; } } printf("%d\n",sum); } return 0; }
相关文章推荐
- POJ 3468 A Simple Problem with Integers(线段树成段更新+lazy标记)
- poj-2777 线段树lazy标记+位运算
- POJ 3237 Tree (树链剖分 路径剖分 线段树的lazy标记)
- poj 1436 Horizontally Visible Segments(线段树)(第二部分成段更新 不需要延迟标记 )
- poj 4047 Garden 线段树lazy标记与成段更新
- poj 3468 线段树 lazy标记模板
- hdu 1698 poj 3468 线段树 成段更新(lazy标记)
- poj 3468 A Simple Problem with Integers(线段树成段更新,延迟标记,Lazy)
- POJ 3468-A Simple Problem with Integers(线段树_区间更新+lazy标记)
- poj 1436【线段树--lazy,区间与端点,结束与否,时间与投影,访问一次】
- 基本线段树(标记下传lazy-tag思想)poj 2468 A Simple Problem with Integers
- POJ 2777 count color(线段树,lazy标记)
- poj 3225 线段树注意lazy标记
- Poj 3468 线段树 lazy
- 线段树区间更新模板(lazy延迟标记)(1698)
- 线段树区间修改 lazy标记 大法
- POJ 2528 线段树 + 延迟标记 + 离散化
- HDU1698 Just a Hook 【线段树】+【成段更新】+【lazy标记】
- [ACM] poj 3468 A Simple Problem with Integers(线段树,成段更新,懒惰标记)
- POJ 1436 Horizontally Visible Segments (线段树+区间覆盖)