1019 逆序數
基準時間限制:1 秒 空間限制:131072 kb 分值: 0 難度:基礎題
在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱為這個排列的逆序數。
如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序數是4。給出乙個整數序列,求該序列的逆序數。
input
第1行:n,n為序列的長度(n <= 50000)
第2 - n + 1行:序列中的元素(0 <= a[i] <= 10^9)
output
輸出逆序數
input示例
424
31
output示例
4
這道題暴力的話會超時,看了下網上的**,需要用到歸併
需要用到歸併時間複雜度為o(nlogn)。
先把**寫下,詳細的理解稍後補充
#include#include//#includeusing namespace std;
typedef long long ll;
const int maxn=50005;
int a[maxn],b[maxn];
int count;
int n;
void merge(int a,int start,int mid,int end)
else
}while(i<=mid)
while(j<=end)
for(int i=start;i<=end;i++) }
void mergesort(int *a,int start,int end)
} return cnt;
}int main()
printf("%lld\n",merge_count(a));
} return 0;
}
歸併排序 51nod 1019 逆序數
後面的總結可能有錯誤的地方 發現請指出 畢竟 也是從別人呢裡搬的有 也有自己的總結!1019 逆序數 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱...
51Nod 1019 逆序數 歸併排序
1019 逆序數 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱為這個排列的逆序數。如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序數...
51 nod 1019 逆序數(歸併排序)
1019 逆序數 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 收藏 關注 在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱為這個排列的逆序數。如2 4 3 1中,2 1,4 3,4 1,3 1是...