權值BIT 小朋友排隊

2022-05-10 02:42:08 字數 976 閱讀 4373

解題思路

每個小朋友需要交換的次數必然是左邊比他大的 + 右邊比他小的

用 權值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 依次類推...