首页 > 代码库 > 二维线段树模式
二维线段树模式
1 #include<iostream> 2 using namespace std; 3 const int N=3000; 4 struct SubNode 5 { 6 int left,right; 7 int value; 8 } 9 struct Node10 {11 int left,right;12 SubNode subnode[N];13 int value;14 }15 Node node[N];16 int left,right;//要使用区间的左右端点 17 void Sub_build(int l,int r,int i,int t)//头节点的i=0; 18 {19 node[t].subnode[i].left=l;20 node[t].subnode[i].right=r;21 node[t].subnode[i].value=http://www.mamicode.com/0;22 if(l==r)return;//以点作为基本单位,每个叶子是一个点 23 //if(l+1==r)return//以边作为基本单位,每个叶子是一条长度为1的边24 int mid=(l+r)>>1;25 Sub_build(l,mid,2*i+1,t);26 Sub_build(mid+1,r,2*i+2,t);27 //Sub_build(mid, r,2*i+2,t);28 }29 void Main_build(int l,int r,int i)//i从零开始 30 {31 node[i].left=l;32 node[i].right=r;33 node[i].value=http://www.mamicode.com/0;//相应的值 34 Sub_build(left,right,0,i);35 if(l==r)return;36 if(l+1==r)return;37 int mid=(l+r)>>1;38 Main_build(l,mid,2*i+1);39 Main_build(mid+1,r,2*i+2);40 //Main_build(mid,r,2*i+2);41 }42 void query(int l,int r,int left,int right,int i)43 {44 //按照条件寻找相应的值 45 46 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。