博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sgu 180
阅读量:6220 次
发布时间:2019-06-21

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

hot3.png

求逆序数,用归并排序或者bst都可以。水题中的战斗机。。。。WA on case 12 无数次,百思不得其解,输入的范围已经考虑过了。。。。最后忍不住了,上网看看别人的答案,发现原来是输出的范围没有考虑,输出的范围是会超过int类型的,所以要用__int64。。。。

#include 
#include
#include
#include
using namespace std;int a[65537];int b[65537];__int64 mergeSort(int a[], int start, int end) { int len = end - start + 1; assert(len > 0); if (len == 1) { return 0; } if (len == 2) { if (a[start] > a[end]) { swap(a[start], a[end]); return 1; } else { return 0; } } int mid = start + (end - start) / 2; __int64 inversionNum = mergeSort(a, start, mid) + mergeSort(a, mid + 1, end); int i = start; int j = mid + 1; int k = 0; for (k = 0; k < len; ++k) { if (i > mid) { b[k] = a[j]; ++j; continue; } if (j > end) { b[k] = a[i]; ++i; continue; } if (a[j] < a[i]) { b[k] = a[j]; ++j; inversionNum = inversionNum + (mid - i + 1); } else { b[k] = a[i]; ++i; } } for (k = 0; k < len; ++k) { a[start + k] = b[k]; } return inversionNum;}int main() { int N; scanf("%d", &N); int i; for (i = 0; i < N; ++i) { scanf("%d", &(a[i])); } printf("%I64d\n", mergeSort(a, 0, N - 1)); return 0;}

转载于:https://my.oschina.net/mustang/blog/55934

你可能感兴趣的文章
为何百度、智链、蚂蚁金服,纷纷压注区块链溯源?
查看>>
关于HTTPOXY漏洞的分析说明
查看>>
Visual Studio 2017 15.5预览版添加对F# Core及Standard的支持
查看>>
系统监控:top vs Htop vs Glances
查看>>
通过调研开源基准测试集,解读大数据的应用现状和开源未来
查看>>
期待已久的Firefox 39最终顺利发布
查看>>
VS2017 15.4提供预览版,面向Windows 10秋季更新(FCU)
查看>>
如何通俗易懂地向别人解释React生命周期方法?
查看>>
马化腾:电力时代孕育了计算机,人工智能兴盛于云计算
查看>>
esp8266代码中的存储标记
查看>>
如何在C++中使用空引用及该或不该
查看>>
进击JavaScript之(三)玩转闭包
查看>>
js面试
查看>>
AngularJS指令实践
查看>>
Python工具分析风险数据
查看>>
Git自由之章 - 关于SSH 公钥
查看>>
关于classpath中有多个同名类或一个接口有多个实现类Spring启动失败总结
查看>>
数组reduce方法的高级技巧
查看>>
pt-online-schema-change使用说明、限制与比较
查看>>
一些小技巧让JS代码更优雅
查看>>