博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ACM基础训练题解4301 城市地平线
阅读量:4941 次
发布时间:2019-06-11

本文共 1650 字,大约阅读时间需要 5 分钟。

遍历线段树   线段树的插入和查询

1 //城市地平线(线段树) 2 #include
3 #include
4 #include
5 #include
6 #include
7 using namespace std; 8 typedef __int64 LL; 9 struct building{10 LL x1;11 LL x2;12 LL height;13 }line[50000];14 LL node[100000];15 struct tree{16 LL left;17 LL right;18 LL hi;19 }treenode[1000000];20 bool cmp(building a,building b){21 return (a.height
>line[i].x1>>line[i].x2>>line[i].height;29 node[i*2-1]=line[i].x1;30 node[i*2]=line[i].x2;31 }32 sort(line+1,line+n+1,cmp);33 int j=1;34 sort(node+1,node+1+2*n);35 for(int i=1;i<=n*2;i++){36 if(node[j]!=node[i])37 node[++j]=node[i];38 }39 node[0]=j;40 return ;41 }42 void creatree(int ll,int rr,int p){43 treenode[p].left=node[ll];44 treenode[p].right=node[rr];45 if(ll+1==rr)46 return ;47 int mid=(ll+rr)/2;48 creatree(ll,mid,p*2);49 creatree(mid,rr,p*2+1);//***50 return ;51 }52 void insert(LL ileft,LL iright,LL value,int p){53 if(ileft<=treenode[p].left && treenode[p].right<=iright){54 treenode[p].hi=value;55 return ;56 }57 if(treenode[p].hi>0)58 treenode[p*2].hi=treenode[p*2+1].hi=treenode[p].hi;59 treenode[p].hi=-1;60 if(iright>treenode[p*2].right)61 insert(ileft,iright,value,p*2+1);62 if(ileft
0)68 return (treenode[p].hi*(treenode[p].right-treenode[p].left));69 if(treenode[p].hi==0)70 return 0;71 return (search(p*2)+search(p*2+1));72 }73 int main(){74 int n;75 cin>>n;76 clear(n);77 creatree(1,node[0],1);78 for(int i=1;i<=n;i++)79 insert(line[i].x1,line[i].x2,line[i].height,1);80 cout<
<

转载于:https://www.cnblogs.com/acplayfacm/p/3861329.html

你可能感兴趣的文章
window的对象有哪些(笔记)
查看>>
Boolean Expressions
查看>>
They Are Everywhere
查看>>
数据结构--汉诺塔递归Java实现
查看>>
day14 多态与抽象
查看>>
Eclipse CDT 出现 launch failed Binary not found
查看>>
apache jmeter
查看>>
Linux 基本命令
查看>>
RedHat7.0 网络源的配置
查看>>
(Mark)JS中关于闭包
查看>>
流程结构图
查看>>
ios端web app在键盘升起后缩小view防止界面仍可上下滑动
查看>>
从service弹出系统级自定义提示框,可在任意页面弹出
查看>>
Bootstrap简单介绍
查看>>
iOS Touch ID 身份认证
查看>>
springboot 注解笔记
查看>>
图解HTTP---------------------------------------4
查看>>
hibernate实体类配置文件问题(字段使用默认值)
查看>>
rsync+inotify脚本
查看>>
LeetCode 860.柠檬水找零(C++)
查看>>