博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1394(归并求逆序对)
阅读量:4325 次
发布时间:2019-06-06

本文共 1159 字,大约阅读时间需要 3 分钟。

原始序列逆序对为ans,新序列的逆序对减少s[i]个,增加n - (s[i] + 1)个,所以增加的逆序对为ans += n - 1 - 2*s[i];

#include 
using namespace std;typedef long long ll;const int N = 5e5+10;int s[N], b[N], tmp[N];ll cnt;inline void merge_sort(int a[], int l, int r){ if(l == r) return; int mid = (l + r) / 2; merge_sort(a, l, mid); merge_sort(a, mid + 1, r); int i = l, j = mid + 1, k = 0; while(i <= mid && j <= r){ if(a[i] <= a[j]) tmp[k++] = a[i++]; else tmp[k++] = a[j++], cnt += (ll)mid - i + 1; } while(i <= mid) tmp[k++] = a[i++]; while(j <= r) tmp[k++] = a[j++]; for(i = 0; i < k; i++){ a[l + i] = tmp[i]; }}int main(){#ifdef ONLINE_JUDGE#else freopen("in.txt", "r", stdin);#endif //ONLINE_JUDGE int n; while(~scanf("%d", &n)){ cnt = 0; for(int i = 1; i <= n; i++){ scanf("%d", &s[i]); b[i] = s[i]; } merge_sort(b, 1, n); ll ans = 0x3f3f3f3f; for(int i = 1; i <= n; i++){ cnt += (n - 1 - 2 * s[i]); ans = min(cnt, ans); } printf("%lld\n", ans); } return 0;}

 

转载于:https://www.cnblogs.com/kun-/p/10555211.html

你可能感兴趣的文章
自定义维度与指标
查看>>
跟我一起玩Win32开发(13):握手对话框
查看>>
C#调用C/C++动态库 封送结构体,结构体数组
查看>>
ASP.NET MVC WebAPI 从入门到精通 (二)– 客户端和WebService之间文件传输
查看>>
卸载LabVIEW及其模块的方法
查看>>
[C/C++] C++中new的语法规则
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第6节 Lambda表达式_1_函数式编程思想概述...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第2节 线程实现方式_12_创建多线程程序的第二种方式_实现Runnable接口...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第6节 Lambda表达式_2_冗余的Runnable代码...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第2节 线程实现方式_13_Thread和Runnable的区别...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第2节 线程实现方式_14_匿名内部类方式实现线程的创建...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第3节 线程同步机制_1_线程安全问题的概述...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第3节 线程同步机制_2_线程安全问题的代码实现...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第6节 Lambda表达式_3_编程思想转换&体验Lambda的更优写法...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第4节 等待唤醒机制_4_Object类中wait带参方法和notifyAll方法...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第6节 Lambda表达式_4_Lambda标准格式...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第6节 Lambda表达式_5_Lambda表达式的无参数无返回值的...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第6节 Lambda表达式_6_Lambda表达式有参数有返回值的...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_01 File类_2_File类的静态成员变量...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第6节 Lambda表达式_7_Lambda表达式有参数有返回值的练习...
查看>>