参考:http://blog.sina.com.cn/s/blog_691ce2b70101ldmm.html

https://blog.csdn.net/wiking__acm/article/details/7920429

语法:https://zhidao.baidu.com/question/172532047.html

 #include <stdio.h>
#include <algorithm> using namespace std; int a[];
struct Node{
int l,r,num;//num该区间已出现数的个数
}tree[]; void Build(int n,int x,int y){
tree[n].l = x;
tree[n].r = y;
tree[n].num = ;
if(x == y){
return;
}
int mid = (x + y) / ;
Build(*n,x,mid);
Build(*n+,mid+,y);
} void Modify(int n,int x){//在输入的相应叶节点加1
int l = tree[n].l;
int r = tree[n].r;
int mid = (l + r) / ;
if(x == l && x == r){
tree[n].num = ;
return;
}
if(x <= mid) Modify(*n,x);
else Modify(*n+,x);
tree[n].num = tree[*n].num + tree[*n+].num;
} int Query(int n,int x,int y){//求大于该数且已经出现的数个数,n节点序号,x左端点,y右端点
int l = tree[n].l;
int r = tree[n].r;
int mid = (l + r) / ;
int ans = ;
if(x == l && y == r)
return tree[n].num;
if(x <= mid) ans += Query(*n,x,min(mid,y));
if(y > mid) ans += Query(*n+,max(mid+,x),y);
return ans;
}
int main(){
int n,sum,ans;
int i,j; while(scanf("%d",&n) != EOF){
sum = ;
Build(,,n-);//区间端点取0~n-1即可
for(i = ;i <= n;i++){
scanf("%d",&a[i]);
Modify(,a[i]);
sum += Query(,a[i]+,n-);
}
ans = sum;
for(i = ;i < n;i++){
sum = sum + (n - - a[i]) - a[i];//根据递推式加上接下来依次循环的序列的逆序数
if(sum < ans)
ans = sum;//要最小的
}
printf("%d\n",ans);
}
}

最新文章

  1. objective-c系列-动态类型和动态绑定
  2. Useful bat command
  3. 程序猿必知会的JavaScript 的遍历方式
  4. ThreadLocal,ThreadLocalMap,Thread 的相互关系
  5. jQuery插件使用大全
  6. git check 分支代码
  7. windows 7 共享,未授予用户在此计算机上的请求登录类型
  8. 微软未公开的 SP
  9. Fisher Vector Encoding and Gaussian Mixture Model
  10. PHP面向对象-看父类调用子类方法
  11. HashMap 你真的了解吗?
  12. ElasticSearch-6.2安装head插件
  13. [Ynoi2018]末日时在做什么?有没有空?可以来拯救吗?
  14. 微信小程序记账本进度四
  15. pycharm opencv4.0安装使用
  16. 算法实践——舞蹈链(Dancing Links)算法求解数独
  17. [Object Tracking] Contour Detection through OpenCV
  18. arc 093 C – Traveling Plan
  19. [UE4]用.csv作为配置文件
  20. PAT 1037 在霍格沃茨找零钱(20)(代码+思路)

热门文章

  1. 数组:获取数组中最后一个数据end()函数
  2. June 17th 2017 Week 24th Saturday
  3. VS LNK2019 解决办法之一
  4. ABAP和Java里关于DEFAULT(默认)机制的一些语言特性
  5. Android(java)学习笔记22:我们到底该如何处理异常?
  6. 【遥感专题系列】微波遥感(三、SAR图像特征)
  7. jstl 中substring,length等函数用法
  8. override render 方法
  9. 书籍《深入理解Spring Cloud 与微服务构建》勘误、源码下载
  10. Openresty最佳案例 | 第9篇:Openresty实现的网关权限控制