NOIP2013 火柴排隊

2021-07-03 06:45:44 字數 658 閱讀 4872

題目:

分析:a中第幾大一定對應b中第幾大。ab同時移動相當於a移動,相對位置不變。所以,用c[i]表示a[i]需要移動到的 位置,求其中的逆序對。因為乙個每移動相鄰兩個元素相當於消除乙個逆序對。

**:

#include 

#include

using

namespace

std;

const

int tmax=100005,mod=99999997;

struct node

}while(xl<=mid) tmp[++len]=c[xl++];

while(xr<=r) tmp[++len]=c[xr++];

for(mid=1;mid<=len;mid++)

c[l+mid-1]=tmp[mid];

return;

}int main()

sort(a+1,a+1+n);

for(i=1;i<=n;i++)

sort(b+1,b+1+n);

for(i=1;i<=n;i++)

c[a[i].p]=b[i].p;

gbsort(1,n);

printf("%lld",ans);

return

0;}

NOIP 2013 火柴排隊

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

noip2013 火柴排隊

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

NOIp2013 火柴排隊

描述 涵涵有兩盒火柴,每盒裝有 n 根火柴,每根火柴都有乙個高度。現在將每盒中的火柴各自排成一列,同一列火柴的高度互不相同,兩列火柴之間的距離定義為 每列火柴中相鄰兩根火柴的位置都可以交換,請你通過交換使得兩列火柴之間的距離最 小。請問得到這個最小的距離,最少需要交換多少次?如果這個數字太大,請輸出...