# 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...