hihoCoder39周 归并求逆序对个数
来源:互联网 发布:2016小猪收银系统源码 编辑:程序博客网 时间:2024/05/22 03:22
题意 nlogn求逆序对个数
思路 分治法,利用归并排序,f(l,r)表示区间[l,r]上逆序对的个数。f(l,r) = f(l,mid) + f(mid+1,r) + 前后两个区间的逆序对数(可以在归并的过程中顺便统计)
#include <iostream>#include <cstdio>#include <cstring>#include <vector>using namespace std;const int maxn = 100005;typedef long long ll;int a[maxn];int n;ll guiBing(int l,int r){if(l==r)return 0;int mid = (l+r)/2;ll ret = guiBing(l,mid) + guiBing(mid+1,r);vector<int> vec;int i,j;for(i=l,j=mid+1;i<=mid&&j<=r;){if(a[j] >= a[i]){vec.push_back(a[i]);i++;}else{vec.push_back(a[j]);j++;ret += (ll) mid - i + 1;}}for(;i<=mid;i++){vec.push_back(a[i]);}for(;j<=r;j++){vec.push_back(a[j]);}for(i=l;i<=r;i++){a[i] = vec[i-l];}return ret;}int main(){scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d",&a[i]);}printf("%lld\n",guiBing(0,n-1));return 0;}
0 0
- hihoCoder39周 归并求逆序对个数
- 归并排序求逆序对的个数
- 归并排序求逆序对个数
- 归并求逆序对
- 归并求逆序对
- 利用归并排序求数列中逆序对个数
- POJ 2299 求逆序对个数 归并排序 Or数据结构
- Ultra-QuickSort(归并排序求逆序对的个数)
- 求逆序对个数
- 归并排序求逆序对
- poj1007 归并求逆序对
- 归并排序求逆序对
- 归并排序求逆序对~~~
- 归并求逆序对【模板】
- 归并排序求逆序对
- 归并排序求逆序对
- 归并排序求逆序对
- 归并排序求逆序对
- 面向对象设计原则之单一职责原则
- Lua脚本语法说明
- 关于openGL, openGL ES, openVG
- python获取Stanford AI课程的批量下载地址
- 【Launcher2源码解读】Launcher中的自定义控件
- hihoCoder39周 归并求逆序对个数
- Android 仿美团网,大众点评购买框悬浮效果之修改版
- table td 英文数字换行问题
- 关于SQL Server 2008的安全机制问题中的SQL Server和Windows身份验证模式
- xampp curl
- SQL Server 2000 数据库恢复技术内容提要
- 避免’sudo echo x >’(sudo 重定向) 时’Permission denied’
- BlueMix与商业智能BI(第一部分:Bluemix的使用)
- CLAHE