#include<stido.h>
#define max(a,b) a>b?a:b
#define min(a,b) a<b?a:b
#define INF 0x7fffffff
#define size 100
int arr[size];
struct SegTreeNode
{
int max;
int min;
int sum;
int addMark;//延迟标记
}segTree[4*size];//定义线段树
/*
功能:构造线段树
root:当前线段树的根节点下标
arr:用来构造线段树的数组
istart:数组的起始位置
iend:数组的结束位置
*/
void build(int root,int istart,int iend,int arr[])
{
segTree[root].addMark=0;
if(istart==iend)
segTree[root].min=arr[istart];
else{
int mid=(istart+iend)/2;
build(2*root+1,istart,mid,arr);//递归构造左子树
build(2*root+2,mid+1,iend,arr);//递归构造右子树
//根据左右子树根节点的值,更新当前节点跟的值
segTree[root].min(segTree[
segTree
最新推荐文章于 2023-05-11 21:23:17 发布