今天温习树状数组,果然忘记了好多,树状数组求逆序数,值得注意这道题所有的数都是0-n-1的,所以在求最小的时候不用每个数顺序在计算一遍,我已开始就是把每个顺序又计算了一遍,果断超时了。第i个数拿到后面去,逆序数会减少a[i]-1,同时会增加n-a[i]

#include<iostream>
#include<stdio.h>
using namespace std;
int a[5005],tree[5005],n;
int lowbit(int x){return x&(-x);
}
void add(int i,int val){while(i<=n){tree[i]+=val;i+=lowbit(i);}
}
int sum(int i){int r=0;while(i>=1){r+=tree[i];i-=lowbit(i);}return r;
}
int main(){//   freopen("in.txt","r",stdin);while(~scanf("%d",&n)){for(int j=0;j<=n;j++)tree[j]=0;int ans=0;for(int i=1;i<=n;i++){scanf("%d",&a[i]);a[i]++;ans+=sum(n)-sum(a[i]);add(a[i],1);}int min=ans;for(int i=1;i<=n;i++){ans=ans-(a[i]-1)+n-a[i];// //           cout<<ans<<endl;if(ans<min) min=ans;}cout<<min<<endl;}
}

HDU 1394 Minimum Inversion Number 树状数组相关推荐

  1. HDU - 1394 Minimum Inversion Number(树状数组)

    题目链接:点击查看 题目大意:线段树求逆序数,给出的数列可以组成环,问怎么样求可以让逆序数最小,输出最小值 题目分析:看到这个题的第一反应是暴力枚举5000种情况,因为感觉这个题的N给的不是很大,但是 ...

  2. HDU 1394 Minimum Inversion Number(线段树的单点更新)

    点我看题目 题意 :给你一个数列,a1,a2,a3,a4.......an,然后可以求出逆序数,再把a1放到an后,可以得到一个新的逆序数,再把a2放到a1后边,,,,,,,依次下去,输出最小的那个逆 ...

  3. 逆序数2 HDOJ 1394 Minimum Inversion Number

    题目传送门 1 /* 2 求逆序数的四种方法 3 */ 1 /* 2 1. O(n^2) 暴力+递推 法:如果求出第一种情况的逆序列,其他的可以通过递推来搞出来,一开始是t[1],t[2],t[3]. ...

  4. HDU 5517---Triple(二维树状数组)

    题目链接 Problem Description Given the finite multi-set A of n pairs of integers, an another finite mult ...

  5. POJ 3928 hdu 2492 Uva1428 PingPong 【树状数组】

    Ping pong                                                   Time Limit: 2000/1000 MS (Java/Others)   ...

  6. HDU 3584 Cube (三维树状数组)

    Problem Description Given an N*N*N cube A, whose elements are either 0 or 1. A[i, j, k] means the nu ...

  7. hdu 5157(manacher+前缀和+树状数组)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5157 解题思路: 我们可以先用mancher算法对字符串进行处理,把以每个点为中心的回文串半径求出来, ...

  8. hdu 6447YJJ's Salesman 离散化+树状数组+DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6447 因为图中点的坐标值过大,达到1e9.然而只有1e5个点.所以先将其离散化.并按照<x.y& ...

  9. [HDU - 2852] KiKi's K-Number (树状数组+二分)

    链接 http://acm.hdu.edu.cn/showproblem.php?pid=2852 题意 现在需要你对一个空序列做nnn次操作,操作分三种 0x0\ \ x0  x :向序列中加入一个 ...

  10. HDU - 5775 - Bubble Sort( 树状数组 + 思维 )

    题目链接:点击进入 题目 题意 问在给出的冒泡排序过程中,一个数到达的最右边位置与最左边位置距离差. 思路 对于一个数,位置 i ,假设右边比它小的数有 r 个,左边比它大的数有 l 个,最右边到达的 ...

最新文章

  1. (0054)iOS开发之制作静态库详解
  2. 2017广东工业大学程序设计竞赛决赛 题解源码(A,数学解方程,B,贪心博弈,C,递归,D,水,E,贪心,面试题,F,贪心,枚举,LCA,G,dp,记忆化搜索,H,思维题)...
  3. Spring源码由浅入深系列一 简介
  4. leetcode9. 回文数
  5. java请求url拼接xml_java访问一个URL,会返回给你一个XML格式的数据,该怎么实现?...
  6. 2021-09-02 网安实验-文件修复-CTF中的压缩包
  7. 阿里云播放器Aliplayer-WEB走坑中
  8. 日本性价比旅馆分析报告
  9. 网络Sniffing原理
  10. python连接sap接口_基于Python的SAP流程自动化
  11. get与post的解释与区别
  12. ArcGIS Online试用版注册 并发布要素服务
  13. I2C器件的从设备地址的设置(以AT24C02为例)
  14. 最新C语言深入剖析班项目实战教程(国嵌 唐老师主讲)
  15. EndNote同步失败怎么解决?
  16. 6.复杂网络实验六:SIR病毒传播模型(matlab)
  17. 【毕业设计】基于stm32的智能饮水控制系统 - 单片机 嵌入式 物联网
  18. 民间各类恐怖请仙大法(上)(转帖)
  19. 拓嘉辰丰:拼多多开店半个月都没有起色、没有销量怎么办
  20. 云队友丨那些工作能力强的人,是怎么做到的?

热门文章

  1. YIi2 Pjax简单使用
  2. MySQL 开启二进制日志记录
  3. 【转】Android 全屏方案(隐藏NavigationBar)
  4. 编程语言-Ruby-问题整理
  5. 机器学习单词记录--02章单变量相性回归
  6. vscode中常用的快捷键
  7. CDH5.14.0 安装失败,无法接受agent发出的检测信号
  8. 浮动元素引起的问题和解决办法
  9. tcp/ip网络协议学习
  10. 连接查询(多表查询)