1215 小朋友排隊

2022-09-21 00:51:11 字數 1917 閱讀 6368

\(n\) 個小朋友站成一排。

現在要把他們按身高從低到高的順序排列,但是每次只能交換位置相鄰的兩個小朋友。

每個小朋友都有乙個不高興的程度。

開始的時候,所有小朋友的不高興程度都是 \(0\)。

如果某個小朋友第一次被要求交換,則他的不高興程度增加 \(1\),如果第二次要求他交換,則他的不高興程度增加 \(2\)(即不高興程度為 \(3\)),依次類推。當要求某個小朋友第 \(k\) 次交換時,他的不高興程度增加 \(k\)。

請問,要讓所有小朋友按從低到高排隊,他們的不高興程度之和最小是多少。

如果有兩個小朋友身高一樣,則他們誰站在誰前面是沒有關係的。

輸入的第一行包含乙個整數 \(n\),表示小朋友的個數。

第二行包含 \(n\) 個整數 \(h_1,h_2,…,h_n\),分別表示每個小朋友的身高。

輸出一行,包含乙個整數,表示小朋友的不高興程度和的最小值。

資料範圍

\(1≤n≤100000,\)

\(0≤h_i≤1000000\)

輸入樣例:

3

3 2 1

輸出樣例:
9
樣例解釋

首先交換身高為\(3\)和\(2\)的小朋友,再交換身高為\(3\)和\(1\)的小朋友,再交換身高為\(2\)和\(1\)的小朋友,每個小朋友的不高興程度都是\(3\),總和為\(9\)。

貪心,逆序對,樹狀陣列

假設序列逆序對數量為 \(k\),首先基於氣泡排序的思想,要交換的次數僅為 \(k\),然後分析每個數,假設前面比它大的數有 \(k_1\) 個,後面比它小的數有 \(k_2\) 個,即最後會有 \(k_1+k_2\) 個數從當前數穿過,也即當前數至少要被交換 \(k_1+k_2\) 次,將這些數全部加起來恰好等於 \(2k\),由於有重複計算,逆序對個數恰好為 \(k\),即每個數可以交換 \(k_1+k_2\) 次,使其完成排序且最少

// problem: 小朋友排隊

// contest: acwing

// url:

// memory limit: 64 mb

// time limit: 1000 ms

// // powered by cp editor (

// %%%skyqwq

#include //#define int long long

#define help

#define pb push_back

#define fi first

#define se second

#define mkp make_pair

using namespace std;

typedef long long ll;

typedef pairpii;

template bool chkmax(t &x, t y)

template bool chkmin(t &x, t y)

template void inline read(t &x)

while (s <= '9' && s >= '0') x = x * 10 + (s ^ 48), s = getchar();

x *= f;

}const int n=1e6+5;

int res[n],tr[n],n,h[n];

int ask(int x)

void add(int x,int y)

memset(tr,0,sizeof tr);

for(int i=n;i;i--)

ll ans=0;

for(int i=1;i<=n;i++)ans+=1ll*(1+res[i])*res[i]/2;

cout

}

AcWing 1215 小朋友排隊

原題鏈結 考察 樹狀陣列 貪心 or歸併排序 貪心 思路 首先乙個定理 氣泡排序的交換次數 逆序對個數.證明 氣泡排序每次交換減少乙個逆序對,當最後逆序對數量 0,交換次數 k.又因為每次只能減少乙個.那麼必然可以取到k.對於某乙個人i而言,i前面 hi有k個,後面i有t個.k t就是i的交換次數最...

小朋友排隊

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

小朋友排隊

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