其實就是找前面有多少個比他小的數
顯然要用線段樹,是裸的線段樹,但是不知道為什麼自己卻一點思路都沒有。
對於能力值建立一顆線段樹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 ...