hdu 2689 線段樹實現

2021-06-22 10:58:14 字數 800 閱讀 6065

# include # define lson l , m , rt<<1

# define rson m+1,r , rt<<1|1

# define maxn 1111

int sum[maxn<<2];

void build(int l,int r,int rt)

int m=(l+r)>>1;

build(lson);

build(rson);

}void pushup(int rt)

int query(int l,int r,int l,int r,int rt)

int ret=0;

int m=(l+r)>>1;

if(l<=m) ret+=query(l,r,lson);

if(r>m) ret+=query(l,r,rson);

return ret;

}void add(int p,int l,int r,int rt)

int m=(l+r)>>1;

if(p<=m) add(p,lson);

if(p>m) add(p,rson);

pushup(rt);

}int main ()

printf("%d\n",sum);

}return 0;

}

這個題其實就是求逆序數  在求的時候按順序每次讀入乙個數,求在他前面有多少個比他大的數,加到sum上 然後跟新,sum依然是區域和  之前想找乙個用線段樹寫的 結果沒有 全是用樹狀陣列寫的 哎 果斷自己寫一發  求刷訪問量

hdu 預處理 線段樹)

給n個數,m個詢問,問任意區間內與其它數互質的數有多少個 比如3個數1 2 4,詢問 1,3 那麼答案是1 千萬要記住,這樣的題目,如果你不轉變下,使勁往線段樹想 雖然轉變之後,也說要用到線段樹,但是維護的東西不同了 那麼會發現這樣的題目,區間與區間之間是無法傳遞資訊的,區間與區間是無法傳遞資訊的,...

初步線段樹 hdu1166

include include includeusing namespace std define max 50000 struct node node maintree 4 max void settree int n,int l,int r int main printf case d n tt...

hdu 1556 初級線段樹

include include include define max 100005 define mid l r 1 define lson l,m,rt 1 define rson m 1,r,rt 1 1 using namespace std int n struct tree tree tr...