周賽 廠裡田徑賽 題解(線段樹)

2021-10-03 17:26:09 字數 740 閱讀 2911

其實就是找前面有多少個比他小的數

顯然要用線段樹,是裸的線段樹,但是不知道為什麼自己卻一點思路都沒有。

對於能力值建立一顆線段樹or 樹狀陣列, 按編號從小到大列舉每個運動員,每次先查詢當前能力值在[1,a[i]-1] 的人數

及第i個人的結果,然後再將這個人的能力值更新進去(讓能力值為a[i]的人數+1).

注意詢問的時候要加一句if(l==r) return 0;要不然可能會死迴圈re

#includeusing namespace std;

const int maxn=3e5+5;

int n,a[maxn],tree[maxn<<2];

int query(int l,int r,int l,int r,int node)

if(l==r) return 0;//這一步判斷不能忘掉,不然可能會死迴圈

int ans=0,mid=(l+r)/2;

if(mid>=l) ans+=query(l,r,l,mid,node<<1);

if(mid=num) update(num,l,mid,node<<1);

else update(num,mid+1,r,node<<1|1);

tree[node]=tree[node<<1]+tree[node<<1|1];

}int main()

return 0;

}

廠裡田徑賽 長理周賽 樹狀陣列

題目 題目鏈結 描述一年一度的廠裡田徑賽又開始了,hdw等nn位田徑高手 不是 踴躍報名參加 各就各位,預備備,pia 隨著號令槍響,hdw一馬當先的衝了出去,在跑步的過程中,hdw突然想到乙個問題 由於每個選手都有乙個編號ii,第i個選手身上有乙個能力值a iai 現在每個選手都想知道排在他前面的...

資料結構應用 田徑賽的時間安排

假設某校的田徑選拔賽共設六個專案的比賽,即跳高 跳遠 標槍 鉛球 100公尺和200公尺短跑,規定每個選手至多參加三個專案的比賽。現有五名選手報名比賽,選手所選擇的專案如參賽選手比賽專案表所示。現在要求設計乙個競賽日程安排表,使得在盡可以短的時間內安排完比賽。1 為了能較好地解決這個問題,首先應該選...

Leetcode 周賽 203 題解

雖然直接模擬是乙個辦法,但是實際上兜了n圈之後最後多出來的部分就是所求 即 1 3 2 4 等效於 1 4 class solution def mostvisited self,n int,rounds list int list int s,e rounds 0 rounds 1 if s e ...