博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU-1394-Minimum Inversion Number
阅读量:6331 次
发布时间:2019-06-22

本文共 1640 字,大约阅读时间需要 5 分钟。

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

题意:

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

思路:

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

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

找到每次的最小值即可。

代码:

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
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); else Update(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

你可能感兴趣的文章
电子书下载:Programming Windows Identity Foundation
查看>>
有理想的程序员必须知道的15件事
查看>>
用于测试的字符串
查看>>
财付通和支付宝资料收集
查看>>
PHPCMS V9数据库表结构分析
查看>>
理解 IEnumerable 与 IEnumerator
查看>>
NHibernate 2.0 Beta 1 Released和一些工具
查看>>
【每天一个Linux命令】12. Linux中which命令的用法
查看>>
软件接口数据一致性机制
查看>>
微服务架构介绍和RPC框架对比
查看>>
Debian下使用OpenLDAP 管理端
查看>>
泛型排序器TComparer
查看>>
9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路...
查看>>
创建符合标准的、有语意的HTML页面——ASP.NET 2.0 CSS Friendly Control Adapters 1.0发布...
查看>>
Adobe驳斥Flash过度耗电论 称HTML5更耗电
查看>>
No!No!No! It's not fashion!
查看>>
艰困之道中学到的经验教训
查看>>
互联网生态建设落地五大挑战——保险科技生态建设 ...
查看>>
进行短视频app开发工作时,可以加入它来保护青少年 ...
查看>>
25G DAC无源高速线缆和25G光模块之间的区别
查看>>