[HDU1394]Minimum Inversion Number
题目: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相关推荐
- hdu1394 Minimum Inversion Number 线段树和树状数组
题意: 输入一个长度 n 第二行给出长度为n的数组,数组的值刚好为0到n-1这n个数. 然后每次把数组的第一个数放到最后一个,放n-1次,共有n个排列,这n个排列就有n个逆序数,输出这n个逆序数的最小 ...
- 逆序数2 HDOJ 1394 Minimum Inversion Number
题目传送门 1 /* 2 求逆序数的四种方法 3 */ 1 /* 2 1. O(n^2) 暴力+递推 法:如果求出第一种情况的逆序列,其他的可以通过递推来搞出来,一开始是t[1],t[2],t[3]. ...
- HDOJ1394 Minimum Inversion Number【线段树】
需要注意的就是给出的数是0~n-1,而线段树根节点范围是1-n 所以main中insert要num[i]+1. 当然,根节点范围换成0~n-1就不需要了. Problem : 1394 ( Minim ...
- 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 ...
- Minimum Inversion Number HDU - 1394(求一个数字环的逆序对+多种解法)
题意: 给出n个数(0~n-1,每个数仅出现一次),问它长为n的循环序列中逆序对最少的数量. 多种解法:暴力+树状数组+分治+规律推导公式 题目: The inversion number of a ...
- Minimum Inversion Number 线段树
The inversion number of a given number sequence a1, a2, -, an is the number of pairs (ai, aj) that s ...
- HDU 1394 Minimum Inversion Number(线段树的单点更新)
点我看题目 题意 :给你一个数列,a1,a2,a3,a4.......an,然后可以求出逆序数,再把a1放到an后,可以得到一个新的逆序数,再把a2放到a1后边,,,,,,,依次下去,输出最小的那个逆 ...
- HDU - 1394 Minimum Inversion Number(树状数组)
题目链接:点击查看 题目大意:线段树求逆序数,给出的数列可以组成环,问怎么样求可以让逆序数最小,输出最小值 题目分析:看到这个题的第一反应是暴力枚举5000种情况,因为感觉这个题的N给的不是很大,但是 ...
- HD1394 Minimum Inversion Number
这道题目的意思是:给你一个序列,统计一开始的逆序数的个数,然后依次把第一个元素放到序列末尾,求每次的逆序数个数,求出每次求逆序数里,逆序数最小的那个数 这里需要推一个递推式,就是每次你把第一个元素放到 ...
最新文章
- 2020年「21篇」医学影像算法最佳综述
- ITK:获取类型的基本信息
- JWT(Json web token)认证详解
- 神秘的数组初始化_I / O神秘化
- 【渝粤教育】电大中专职业生涯规划 (2)_1作业 题库
- Java 日期与时间
- 人才盘点最佳实践:45页人才盘点的流程与方法,管理梯队模型
- java js 解析器_graphqljs具有多个参数的解析器
- vision画流程图的软件_这个可以代替Visio的流程图绘制软件,你值得拥有,还有网页版的~...
- 几何画板 html5,几何画板菜单栏
- 未來用工新趨勢_2019年社会化用工成新趋势
- Python 用均匀分布验证中心极限定理
- 2018双11万家互联网门店参战:看苏宁的撩人新姿势
- C++常用的音频工具库
- css之display:inline-block布局
- 毕业生必看:获取就业信息的主要渠道(收藏起来,以免丢失)
- 个人计算机中的防毒软件无法防御,win10系统中无法启动defender防御软件的处理办法...
- 【PyHacker编写指南】网站Cms识别工具
- 最新报告丨深入洞察九大车主 APP,落地汽车行业解决方案及最佳实践
- Flink 使用 murmurhash3 做KeySelector
热门文章
- 2018百度之星程序设计大赛 - 资格赛 hdu6345(找区间最小值)
- leetcode-无重复字符的最长子串
- 区块链成熟度评测报告
- Local Binary Convolutional Neural Networks ---卷积深度网络移植到嵌入式设备上?
- Android 热修复 HotFix 混淆apk生成patch包方案
- centos6.x 安装elasticsearch6.x步骤
- java控制一次传10条数据_java 定时同步数据的任务优化
- JZOJ 3804. 【NOIP2014模拟8.24】小X 的AK 计划
- linux进程卡住_鸿蒙系统,Linux? Android?
- 数学之美 系列八-- 贾里尼克的故事和现代语言处理