题目:Minimum Inversion Number

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394

分析:

1)先对序列求逆序对的数目,归并排序,线段树,树状数组都可以。

2)考虑到这是一个[0,n)的排列,全体加一,变成一个[1,n]的排列。

3)把第一个数移动到最后一位对答案的贡献是(n-a[1])-(a[1]-1)。在第二位到最后一位比a[1]大的有(n-a[1]),这些将由顺序变逆序,比a[1]小的有(a[1]-1),这些将由逆序变顺序。

4)这是一个环,i从头枚举,第i位成为首位,移动到末尾时,对答案的贡献是(n-a[i])-(a[i]-1)。

5)取个最小值即可。

#include <bits/stdc++.h>
using namespace std;
const int maxN=50005;
int n,a[maxN],T[maxN];
void Tadd(int x,int y){for(int i=x;i<=n;i+=i&-i)T[i]+=y;}
int Tque(int x){int ret=0;for(int i=x;i;i-=i&-i)ret+=T[i];return ret;}
int main(){for(int ans,tans;~scanf("%d",&n);){tans=0;for(int i=1;i<=n;++i)T[i]=0;for(int i=1;i<=n;++i){scanf("%d",&a[i]);++a[i];}for(int i=n;i>=1;--i){tans+=Tque(a[i]);Tadd(a[i],1);}ans=tans;for(int i=1;i<=n;++i){tans+=n-a[i]-a[i]+1;ans=min(ans,tans);}printf("%d\n",ans);}return 0;
} 

转载于:https://www.cnblogs.com/hjj1871984569/p/10347201.html

[HDU1394]Minimum Inversion Number相关推荐

  1. hdu1394 Minimum Inversion Number 线段树和树状数组

    题意: 输入一个长度 n 第二行给出长度为n的数组,数组的值刚好为0到n-1这n个数. 然后每次把数组的第一个数放到最后一个,放n-1次,共有n个排列,这n个排列就有n个逆序数,输出这n个逆序数的最小 ...

  2. 逆序数2 HDOJ 1394 Minimum Inversion Number

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

  3. HDOJ1394 Minimum Inversion Number【线段树】

    需要注意的就是给出的数是0~n-1,而线段树根节点范围是1-n 所以main中insert要num[i]+1. 当然,根节点范围换成0~n-1就不需要了. Problem : 1394 ( Minim ...

  4. Minimum Inversion Number HDU - 1394(权值线段树/树状数组)

    The inversion number of a given number sequence a1, a2, -, an is the number of pairs (ai, aj) that s ...

  5. Minimum Inversion Number HDU - 1394(求一个数字环的逆序对+多种解法)

    题意: 给出n个数(0~n-1,每个数仅出现一次),问它长为n的循环序列中逆序对最少的数量. 多种解法:暴力+树状数组+分治+规律推导公式 题目: The inversion number of a ...

  6. Minimum Inversion Number 线段树

    The inversion number of a given number sequence a1, a2, -, an is the number of pairs (ai, aj) that s ...

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

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

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

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

  9. HD1394 Minimum Inversion Number

    这道题目的意思是:给你一个序列,统计一开始的逆序数的个数,然后依次把第一个元素放到序列末尾,求每次的逆序数个数,求出每次求逆序数里,逆序数最小的那个数 这里需要推一个递推式,就是每次你把第一个元素放到 ...

最新文章

  1. 2020年「21篇」医学影像算法最佳综述
  2. ITK:获取类型的基本信息
  3. JWT(Json web token)认证详解
  4. 神秘的数组初始化_I / O神秘化
  5. 【渝粤教育】电大中专职业生涯规划 (2)_1作业 题库
  6. Java 日期与时间
  7. 人才盘点最佳实践:45页人才盘点的流程与方法,管理梯队模型
  8. java js 解析器_graphqljs具有多个参数的解析器
  9. vision画流程图的软件_这个可以代替Visio的流程图绘制软件,你值得拥有,还有网页版的~...
  10. 几何画板 html5,几何画板菜单栏
  11. 未來用工新趨勢_2019年社会化用工成新趋势
  12. Python 用均匀分布验证中心极限定理
  13. 2018双11万家互联网门店参战:看苏宁的撩人新姿势
  14. C++常用的音频工具库
  15. css之display:inline-block布局
  16. 毕业生必看:获取就业信息的主要渠道(收藏起来,以免丢失)
  17. 个人计算机中的防毒软件无法防御,win10系统中无法启动defender防御软件的处理办法...
  18. 【PyHacker编写指南】网站Cms识别工具
  19. 最新报告丨深入洞察九大车主 APP,落地汽车行业解决方案及最佳实践
  20. Flink 使用 murmurhash3 做KeySelector

热门文章

  1. 2018百度之星程序设计大赛 - 资格赛 hdu6345(找区间最小值)
  2. leetcode-无重复字符的最长子串
  3. 区块链成熟度评测报告
  4. Local Binary Convolutional Neural Networks ---卷积深度网络移植到嵌入式设备上?
  5. Android 热修复 HotFix 混淆apk生成patch包方案
  6. centos6.x 安装elasticsearch6.x步骤
  7. java控制一次传10条数据_java 定时同步数据的任务优化
  8. JZOJ 3804. 【NOIP2014模拟8.24】小X 的AK 计划
  9. linux进程卡住_鸿蒙系统,Linux? Android?
  10. 数学之美 系列八-- 贾里尼克的故事和现代语言处理