POJ2481 樹狀陣列

2021-07-15 15:43:40 字數 851 閱讀 2986

題意:給n個節點的s和e,求對於每個節點,其他節點和它的關係滿足si <= sj and ej <= ei and ei - si > ej - sj 的個數

題解:由於e的關係遞減,s的關係遞增,因此可以先對e排序,然後利用樹狀陣列更新並查詢每個sj在其之前的si的個數就是問題的解

#include #include #include #include using namespace std ;

#define max 100005

int t[max] ;

int ans[max] ;

int len ;

int lowbit(int x)

int query(int x)

return ret ;

}void update(int x , int d)

}struct node

cow[max];

bool comp(const struct node &x , const struct node &y)

int main()

sort(cow + 1, cow + 1 + len ,comp) ;

memset(t , 0 , sizeof(t)) ;

for(int i = 1 ; i <= len ; i ++)

else

ans[cow[i].number] = query(cow[i].s) ;

update(cow[i].s , 1) ;

} for(int i = 1 ; i <= len ; i ++)

printf("\n");

} return 0 ;

}

poj 2481(樹狀陣列)

這題樹狀陣列明顯可解,不解釋,但是注意有相同的奶牛的處理 include include include include define n 100005 using namespace std int c n tem struct dian d n int cmp dian a,dian b int...

poj 2481 樹狀陣列

解法2 按si值做降序排序後,相當於求每個位置i左邊大於等於e i 的個數 樹狀陣列更新節點的路徑和求和的路徑要改變,getsum i 相當於求i i 1 maxn include include using namespace std const int maxn 100010 int sum m...

poj2481樹狀陣列

每個牛有乙個區間 s,e 兩個牛 s1,e1 s2,e2 當s1 s2並且e1 e2並且e1 s1 e2 s2時,我們說牛1比牛2強,給n個牛的區間,對於每個牛,輸出比這個牛強的牛的個數。還是需要預處理,先對每個牛的e進行降序排序,e相同時對s進行公升序排列,這樣迴圈時可以保證後邊的牛絕對不比前邊的...