暑假 樹狀陣列 E Stars

2021-07-04 08:54:41 字數 771 閱讀 1376

/*

題意:給出一些星星的橫座標和縱座標,而且星星的縱座標按非遞減排列,

如果縱座標相等,則橫座標按遞增排列,任意兩顆星星不會重合。

某一顆星星的level為:這顆星星的左下角(包括x相等但y小,y相等但x小)

的星星個數。

思路:設定乙個變數m標記它原始的位置,然後按x軸排序,每顆星星的level為:

星星原始位置之前(即sum(m-1))的星星個數,每次計算完這顆星星後則在它

的原位置標記已經計算過了(即add(m,1))。

*/#include#include#includeusing namespace std;

const int maxn=15005;

struct point

;point a[maxn];

int c[maxn],level[maxn],n;

//樹狀陣列,level陣列,星星數量

int lowbit(int x) //樹狀陣列函式之一

int sum(int i)//樹狀陣列函式之一

return s;

}void add(int i,int val)//樹狀陣列函式之一

}bool cmp(point b,point d)//比較函式

return b.x}int main()

sort(a,a+n,cmp);//按x軸排序

for(int i=0;ifor(int i=0;i}

return 0;

}

暑假 樹狀陣列 F Brainman

又是一道逆序數的問題。題意 給出乙個序列,每次只能交換相鄰的2個位置的數,問最少經過幾次交換可以使得序列遞增 思路 逆序對問題,求每個數後面有多少個數比它小 樹狀陣列 離散化 include include includeusing namespace std const int maxn 5000...

暑假 樹狀陣列 I Japan

題意 在西邊有m座城市,東邊有n座城市,分別都是從北到南編號依次為1,2,3.n m 要建k條高速公路,每條高速公路分別從西邊的一座城市連線到東邊的一座城市。問 這些高速公路有多少個交叉點。的高速公路有2中情況,1 從西邊編號比x小的城市連線到東邊比y大的城市。2 從西邊 編號比x大的城市鏈結到東邊...

樹狀陣列(暑假選拔)

某天小y家門前突然多出了兩座石塔,這兩座石塔妨礙了小x的出行,現在小x想要破壞這兩座石塔,假設兩座石塔分別由n1與n2塊石頭構成,每一塊石頭都有乙個破壞順序的優先順序,並且保證這兩座石塔中沒有兩塊優先順序一樣的石頭,小x覺得優先順序越高的石頭應該越早破壞掉,小x可以每次從任意一座石塔的塔頂移動一塊石...