小朋友排隊 藍橋杯

2021-06-29 15:04:10 字數 593 閱讀 6659

因此我們可以借助樹狀陣列來求解前面比它大的個數,即逆序對;

求後面比它小的個數的時候我們可以倒著插入,直接統計即可;

因為有的資料為0,所以我們需要將所有插入的資料+1;

另外統計的時候要處理相同的數,統計前面的數的時候不用減1,統計後面的數的時候需要減1(這樣處理的原因自己思考一下便出來了);

#include#include#includeusing namespace std;

#define maxn 1000010

int n;

__int64 c[maxn+20];

int num[100010];

__int64 cnt[100010];

int lowbit(int x)

int updata(int x)

}int sum(int x)

return ans;

}int main()

__int64 ans=0;

for(int i=0;ians+=(cnt[i]*(cnt[i]+1)/2);

printf("%i64d\n",ans);

}

藍橋杯 小朋友排隊

歷屆試題 小朋友排隊 時間限制 1.0s 記憶體限制 256.0mb 問題描述 n 個小朋友站成一排。現在要把他們按身高從低到高的順序排列,但是每次只能交換位置相鄰的兩個小朋友。每個小朋友都有乙個不高興的程度。開始的時候,所有小朋友的不高興程度都是0。如果某個小朋友第一次被要求交換,則他的不高興程度...

小朋友排隊 藍橋杯

問題描述 n 個小朋友站成一排。現在要把他們按身高從低到高的順序排列,但是每次只能交換位置相鄰的兩個小朋友。每個小朋友都有乙個不高興的程度。開始的時候,所有小朋友的不高興程度都是0。如果某個小朋友第一次被要求交換,則他的不高興程度增加1,如果第二次要求他交換,則他的不高興程度增加2 即不高興程度為3...

藍橋杯 小朋友排隊

n 個小朋友站成一排。現在要把他們按身高從低到高的順序排列,但是每次只能交換位置相鄰的兩個小朋友。每個小朋友都有乙個不高興的程度。開始的時候,所有小朋友的不高興程度都是0。如果某個小朋友第一次被要求交換,則他的不高興程度增加1,如果第二次要求他交換,則他的不高興程度增加2 即不高興程度為3 依次類推...