uva1232
来源:互联网 发布:淘宝卖家货到付款流程 编辑:程序博客网 时间:2024/06/05 22:35
#include<cstdio>#include<algorithm>#include<iostream>#include<sstream>#include<cstring>#include<queue>#include<map>#include<set>#include<stack>#define INF 0x3f3f3f3f#define MAXN 100010#define MAXM 35#define MAXNODE 4*MAXN#define eps 1e-9#define pi 4*atan(1.0)#define pii pair<int,int>using namespace std;int T,N,ql,qr,height,ans,minv[MAXNODE],maxv[MAXNODE],setv[MAXNODE],l[MAXN],r[MAXN],h[MAXN];void maintain(int o,int L,int R){ int lc=(o<<1),rc=(o<<1|1); if(L<R){ minv[o]=min(minv[lc],minv[rc]); maxv[o]=max(maxv[lc],maxv[rc]); } if(setv[o]!=-1) minv[o]=maxv[o]=setv[o];}void pushdown(int o){ if(setv[o]!=-1){ int lc=(o<<1),rc=(o<<1|1); setv[lc]=setv[rc]=setv[o]; setv[o]=-1; }}void update(int o,int L,int R){ if(height<minv[o]) return; if(ql<=L&&qr>=R){ if(height>=maxv[o]){ setv[o]=maxv[o]=minv[o]=height; ans+=R-L+1; return; } if(L==R) return; } pushdown(o); int mid=(L+R)/2,lc=(o<<1),rc=(o<<1|1); if(ql<=mid) update(lc,L,mid); else maintain(lc,L,mid); if(qr>mid) update(rc,mid+1,R); else maintain(rc,mid+1,R); maintain(o,L,R);}int main(){ freopen("in.txt","r",stdin); while(scanf("%d",&T)!=EOF,T){ while(T--){ memset(setv,-1,sizeof(setv)); memset(minv,0,sizeof(minv)); memset(maxv,0,sizeof(maxv)); setv[1]=0; scanf("%d",&N); int MINL=INF,MAXR=-1; for(int i=0;i<N;i++){ scanf("%d%d%d",&l[i],&r[i],&h[i]); MINL=min(MINL,l[i]); MAXR=max(MAXR,r[i]); } ans=0; for(int i=0;i<N;i++){ ql=l[i]+1; qr=r[i]; height=h[i]; update(1,MINL,MAXR); } printf("%d\n",ans); } } return 0;}
0 0
- uva1232
- uva1232 - SKYLINE 线段树
- UVA1232,LA4108,Skyline,线段树
- UVA1232 - SKYLINE(线段树区间修改)
- BUAA Training 2014.03.06
- Java并发编程之线程管理(基本线程同步2)
- 新进员工培训资料 ——职业素养篇
- C++中类的特殊数据成员的构造
- JVM的内存管理
- uva1232
- 【CBIR】List of CBIR engines
- 游标,动态,for循环
- JSP自定义标签
- Testing Opencv读存图片
- POJ 3904 Sky Code (容斥原理)
- java 插入排序+快速排序
- 斐波那契数列的递归和非递归实现
- UESTC1307 windy数 数位DP