noip2013 火柴排隊 題解

2021-08-09 20:18:37 字數 467 閱讀 4375

顯然,我們要讓ai,bi比較」接近」,應該可以觀察發現,當a,b都為降序的時候一一對應最小,證明的話,我們可以考慮交換兩個數,這樣的話,結果一定是會變大的。

然後目標就是讓它們這樣對應,求最小交換次數,這樣,就是求逆序對個數了。當然,歸併排序是很經典的,但是我寫的樹狀陣列,應該常數要小一些吧。

#include

#define n 100000

#define mod 99999997

using

namespace

std;

int n,ans;

int c[n+5],tmp[n+5];

struct match

inline

void add(int pos)

inline

int qurry(int pos)

int main()

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 個火柴的高度。每列火柴中相鄰兩根火柴的位置都可...

noip2013 火柴排隊

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