樹狀陣列 NOIP2013 火柴排隊

2022-05-28 03:09:10 字數 1058 閱讀 3394

★★★   輸入檔案:matchnoip2013.in輸出檔案:matchnoip2013.out簡單對比

時間限制:1 s   記憶體限制:128 mb

樣例一輸入:

2 3 1 4

3 2 1 4

樣例二輸入:

1 3 4 2

這個題似乎在考數學小常識,2333......

首先可以得到兩列火柴的距離和為∑a2+∑b2-2*∑ai*bi,顯然距離僅∑ai*bi有關

由排序不等式,逆序積之和小於亂序積之和,亂序積之和小於順序積之和

如果你非要看成均值什麼的那就隨意了

那麼這個題就是要求相對與第一列的逆序對數了,當然可以相對於第二列

那麼貼**

1 #include2 #include3 #include4 #include5

using

namespace

std;67

const

int m=99999997;8

struct

dataa[100010],b[100010

];11

intn;

12int loc[100010

];13

int tree[100015

];14

intans;

1516

bool cmp1(const data&aa,const data&bb)

1920

bool cmp2(const data&aa,const data&bb)

2324

void add(int

pos)

2728

int ask(int

pos)

3334

intmain()

49 printf("

%d\n

",ans%m);

50fclose(stdin);

51fclose(stdout);

52return0;

53 }

noip2013 火柴排隊 樹狀陣列

涵涵有兩盒火柴,每盒裝有 n 根火柴,每根火柴都有乙個高度。現在將每盒中的火柴各自排成一列,同一列火柴的高度互不相同,兩列火柴之間的距離定義為 ai bi 2 其中 ai 表示第一列火柴中第 i 個火柴的高度,bi 表示第二列火柴中第 i 個火柴的高度。每列火柴中相鄰兩根火柴的位置都可以交換,請你通...

NOIP2013 火柴排隊

題目 分析 a中第幾大一定對應b中第幾大。ab同時移動相當於a移動,相對位置不變。所以,用c i 表示a i 需要移動到的 位置,求其中的逆序對。因為乙個每移動相鄰兩個元素相當於消除乙個逆序對。include include using namespace std const int tmax 10...

NOIP 2013 火柴排隊

題目描述 description 涵涵有兩盒火柴,每盒裝有 n 根火柴,每根火柴都有乙個高度。現在將每盒中的火柴各自排成一列,同一列火柴的高度互不相同,兩列火柴之間的距離定義為 其中 ai表示第一列火柴中第 i 個火柴的高度,bi表示第二列火柴中第 i 個火柴的高度。每列火柴中相鄰兩根火柴的位置都可...