解題思路
每個小朋友需要交換的次數必然是左邊比他大的 + 右邊比他小的
用 權值bit 維護字首字尾再單獨計算等差即可
主席樹應該也是可以解決的
/*
zeolim - an ac a day keeps the bug away
*///#pragma gcc optimize(2)
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;
typedef long long ll;
typedef long double ld;
const int inf = 0x3f3f3f3f;
const ld pi = acos(-1.0);
const ld e = exp(1.0);
const int maxn = 1e7 + 10;
ll arr[maxn] = ;
ll cnt[maxn] = ;
ll c[maxn] = ;
ll lobit(ll x)
void add(ll x, ll n)
ll ask(ll x)
int main()
for(int i = n; i >= 1; --i)
memset(c, 0, sizeof(c));
for(int i = 1; i <= n; ++i)
ll ans = 0;
for(int i = 1; i <= n; ++i)
}cout << ans << '\n';
return 0;
}
小朋友排隊
n 個小朋友站成一排。現在要把他們按身高從低到高的順序排列,但是每次只能交換位置相鄰的兩個小朋友。每個小朋友都有乙個不高興的程度。開始的時候,所有小朋友的不高興程度都是0。如果某個小朋友第一次被要求交換,則他的不高興程度增加1,如果第二次要求他交換,則他的不高興程度增加2 即不高興程度為3 依次類推...
小朋友排隊
問題描述 n 個小朋友站成一排。現在要把他們按身高從低到高的順序排列,但是每次只能交換位置相鄰的兩個小朋友。每個小朋友都有乙個不高興的程度。開始的時候,所有小朋友的不高興程度都是0。如果某個小朋友第一次被要求交換,則他的不高興程度增加1,如果第二次要求他交換,則他的不高興程度增加2 即不高興程度為3...
小朋友排隊
n 個小朋友站成一排。現在要把他們按身高從低到高的順序排列,但是每次只能交換位置相鄰的兩個小朋友。每個小朋友都有乙個不高興的程度。開始的時候,所有小朋友的不高興程度都是0。如果某個小朋友第一次被要求交換,則他的不高興程度增加1,如果第二次要求他交換,則他的不高興程度增加2 即不高興程度為3 依次類推...