BZOJ 4636 (动态开节点)线段树
2017-01-10 22:44
183 查看
思路:
偷懒 懒得离散化
搞了个动态开节点的线段树 (其实是一样的……..)
注意会有a=b的情况 要判掉
//By SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int n,xx,yy,zz,root,cnt,inf=1000000000,tree[22222222],lson[22222222],rson[22222222]; long long ans; void insert(int l,int r,int &pos,int L,int R,int Wei){ if(!pos)pos=++cnt; if(l>=L&&r<=R){tree[pos]=max(tree[pos],Wei);return;} int mid=(l+r)>>1; if(mid<L)insert(mid+1,r,rson[pos],L,R,Wei); else if(mid>=R)insert(l,mid,lson[pos],L,R,Wei); else insert(l,mid,lson[pos],L,R,Wei),insert(mid+1,r,rson[pos],L,R,Wei); } void dfs(int l,int r,int x,int Wei){ if(!x){ans+=(r-l+1)*Wei;return;} int mid=(l+r)>>1; dfs(l,mid,lson[x],max(Wei,tree[lson[x]])); dfs(mid+1,r,rson[x],max(Wei,tree[rson[x]])); } int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d%d%d",&xx,&yy,&zz); if(xx==yy)continue; insert(1,inf,root,xx,yy-1,zz); } dfs(1,inf,root,0); printf("%lld\n",ans); }
相关文章推荐
- BZOJ 4636 (动态开节点)线段树
- 【BZOJ-4636】蒟蒻的数列 动态开点线段树 ||(离散化) + 标记永久化
- 【bzoj 4636】蒟蒻的数列(动态开点线段树)
- BZOJ 3065 替罪羊树+动态开节点线段树
- BZOJ 3531: [Sdoi2014]旅行【树剖+动态开点线段树【听说有人写平衡树?【滑稽
- 【BZOJ3531】[Sdoi2014]旅行 树链剖分+动态开点线段树
- 【bzoj3531】[Sdoi2014]旅行 动态开点的线段树
- bzoj3295[Cqoi2011]动态逆序对(cdq分治||可持久化线段树)
- 【Educational Codeforces Round 2E】【STL-map 启发式合并 or 线段树动态开节点 】Lomsat gelral 一棵树每点一个颜色问每个节点子树的颜色众数之和
- [BZOJ4372][动态树分治(点分树)][动态开点线段树]烁烁的游戏
- 【BZOJ3295】动态逆序对,CDQ分治/BIT套权值线段树
- BZOJ 3295 CQOI 2011 动态逆序对 线段树套Treap
- 线段树实现动态查询和删节点
- BZOJ 4636: 蒟蒻的数列 分快,int64线段树
- 【BZOJ3939】Cow Hopscotch(动态开点线段树)
- 【bzoj3531】 [SDOI2014]旅行 树链剖分+动态开点线段树
- 树链剖分+动态线段树(BZOJ-3531旅行)
- [bzoj 3531][SDOI2014]旅行(树链剖分+动态开点线段树)
- BZOJ-3531 旅行 树链剖分+动态开点线段树
- 【2016杭电女生赛1008】【数据结构 动态节点线段树】Claris Loves Painting