链接:https://vjudge.net/problem/HDU-1394

题意:

给一个由0-(n-1)n个值组成的序列。挨个把首位置的值移到最后一位,求每次的逆序对数,找到最小的那个。

思路:

线段树,对每个值加1方便处理,每来一个新值,查询当前比他大的值的数目。

位移时,因为数组由(0-(n-1))组成,所以每次加上后面比他大的数的个数(n-a[i]),再减去后面比他小的(a[i]-1)。

找到每次的最小值即可。

代码:

#include <iostream>
#include <memory.h>
#include <vector>
#include <map>
#include <algorithm>
#include <cstdio>
#include <math.h>
#include <queue>
#include <string>
#include <stack>
#include <iterator>
#include <stdlib.h>
#include <time.h>
#include <assert.h>using namespace std;
typedef long long LL;const int MAXN = 5e3 + 10;int segment[MAXN*4];
int a[MAXN];void Push_up(int root)
{segment[root] = segment[root<<1] + segment[root<<1|1];
}void Build(int root, int l, int r)
{segment[root] = 0;if (l == r)return ;int mid = (l+r)/2;Build(root<<1, l, mid);Build(root<<1|1, mid+1, r);
}void Update(int root, int l, int r, int p)
{if (l == r){segment[root]++;return;}int mid = (l+r)/2;if (p <= mid)Update(root<<1, l, mid, p);elseUpdate(root<<1|1, mid+1, r, p);Push_up(root);
}int Query(int root, int l, int r, int ql, int qr)
{if (l > qr || r < ql)return 0;if (l >= ql && r <= qr)return segment[root];int mid = (l+r)/2;int sum = 0;sum += Query(root<<1, l, mid, ql, qr);sum += Query(root<<1|1, mid+1, r, ql, qr);return sum;
}int main()
{int n;while (cin >> n){Build(1, 1, n);int sum = 0;for (int i = 1;i <= n;i++){cin >> a[i];a[i]++;int tmp = Query(1, 1, n, a[i]+1, n);sum += tmp;Update(1, 1, n, a[i]);}//cout << sum << endl;int res = sum;for (int i = 1;i <= n;i++){sum += (n-a[i])-(a[i]-1);//cout << sum << endl;res = min(res, sum);}cout << res << endl;}return 0;
}

  

转载于:https://www.cnblogs.com/YDDDD/p/10674626.html

HDU-1394-Minimum Inversion Number相关推荐

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

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

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

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

  3. 逆序数2 HDOJ 1394 Minimum Inversion Number

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

  4. HUOJ 1394 Minimum Inversion Number

    本题两种解法,暴搜,线段树,线段树只是处理最初序列,找出最初的逆序数,之后每次移动为当前逆序数+比移动数大的数-比移动数小的数. 做本题时完全没有想法,完全没有~copy胡浩大神代码,第一次抄错题.. ...

  5. HDOJ1394 Minimum Inversion Number【线段树】

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

  6. 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 ...

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

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

  8. [HDU1394]Minimum Inversion Number

    题目:Minimum Inversion Number 链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 分析: 1)先对序列求逆序对的数目,归并排序 ...

  9. Minimum Inversion Number 线段树

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

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

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

最新文章

  1. Vsftp 安装配置(转)
  2. 在 Spring Boot 中,如何干掉 if else!
  3. Java JDK 11:现在可以使用所有新功能
  4. 写给初学者的Tensorflow介绍
  5. 一位 83 岁独立开发者教会我的道理
  6. html写个用户协议,五分钟学会HTML5的WebSocket协议
  7. 多线程(C++)临界区Critical Sections
  8. 磁盘空间管理工具FolderSizes
  9. Java的加载与执行
  10. 机器人编程软件semia_机器人10大流行编程语言对比 你掌握了哪种?
  11. 使用queryperf对DNS服务器作压力测试
  12. 学python对excel有用吗_程序员必修课:为什么非要用Python做数据分析?Excel不好吗?...
  13. 太厉害了!推荐几款 Redis 可视化工具
  14. ghpython_根据曲线曲率向量和切向量绘制椭圆
  15. Android 自定义控件之---3D画廊
  16. UVA1391/LA3713 Astronauts
  17. 在launcher中隐藏app图标
  18. 一般试卷的纸张大小是多少_平时打印卷子的纸是多大的?
  19. springboot整合容联云发短信验证码
  20. python定义一个triangle类_Python定义一个三角形类Python学习阶段综合练习2,python,triangle,二...

热门文章

  1. ​一文读懂EfficientDet
  2. CB Insights发布最新AI 100排名,包含100家最有前景的AI初创公司
  3. java linux cpu 多核 负载不均匀,系统CPU负载过高、CPU使用率不高的问题
  4. SAP QM初阶之取样策略如何确定检验批Sample Size?
  5. SAP QM QAC1事务代码不能修改含有HU的检验批里的数量
  6. AI研习丨专题:可解释推荐的强化学习框架
  7. GAITC 2020 演讲实录丨张立华:机器智能的发展现状
  8. 「SAP技术」SAP MM 采购信息记录新价格不能体现在采购订单新的ITEM上?
  9. 美国医疗机构是如何应用和看待「新冠AI」的?
  10. 如何看待清华北大毕业生流失去国外?