HDU 1394 Minimum Inversion Number (线段树)

Proteus一体化安装STC15库添加 Proteus一体化安装与STC15库添加指南 本文详细介绍了Proteus 8.9 SP2专业版的一体化安装流程和STC15系列单片机库文件的添加方法。安装过程简单快捷,无需破解,稳定性好。通过将两个库文件(Lib和LIB)复制到Proteus安装目录的DATA/LIBRARY文件夹中,即可实现STC15W4K32S4芯片的仿真功能。文中还提供了新建工程和器件放置的步骤说明,特别指出STC15W4K32S4芯片可兼容仿真其他STC15系列芯片,并附带下载链接获取资源。该教程适用于电子设计初学者和开发者。 阅读详情

Minimum Inversion Number

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 17260    Accepted Submission(s): 10496


Problem Description
The inversion number of a given number sequence a1, a2, ..., an is the number of pairs (ai, aj) that satisfy i < j and ai > aj.

For a given sequence of numbers a1, a2, ..., an, if we move the first m >= 0 numbers to the end of the seqence, we will obtain another sequence. There are totally n such sequences as the following:

a1, a2, ..., an-1, an (where m = 0 - the initial seqence)
a2, a3, ..., an, a1 (where m = 1)
a3, a4, ..., an, a1, a2 (where m = 2)
...
an, a1, a2, ..., an-1 (where m = n-1)

You are asked to write a program to find the minimum inversion number out of the above sequences.
 

Input
The input consists of a number of test cases. Each case consists of two lines: the first line contains a positive integer n (n <= 5000); the next line contains a permutation of the n integers from 0 to n-1.
 

Output
For each case, output the minimum inversion number on a single line.
 

Sample Input
  
10 1 3 6 9 0 8 5 7 4 2
 

Sample Output
  
16
 

Author
CHEN, Gaoli
 

Source

题意:给出一个数组,可以将数组的第一个数放到数组的最后一个数的后面,求经过此种操作后形成数组的最小逆序数。

思路:构建一棵线段树,大区间为[0,n-1],按照数组的顺序插入各个数,按照样例,第一个插入的为1,则将[1,1]置为1,然后向上跟新,然后查询[2,9]区间内已经插入的数的个数,(即比1大且在数组中顺序在1之前的数,1的逆序数),以此类推。

当得到一种数组的逆序数后,可以通过公式 ans = ans + (n - 1 - a[i]) + a[i]来求得最小逆序数。

代码如下:

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int a[5005];
struct node
{
	int l,r,sum;
}t[20020];
int ss;
void build_tree(int l, int r, int k)
{
	if(l == r)
	{
		t[k].l = l;
		t[k].r = r;
		t[k].sum = 0;
		return;
	}
	int mid = (l + r) / 2;
	t[k].l = l;
	t[k].r = r;
	t[k].sum = 0;
	build_tree(l, mid, 2 * k);
	build_tree(mid + 1, r, 2 * k + 1);
}
void insert_tree(int i, int num, int k)
{
	if(t[k].l == t[k].r && t[k].l == i)
	{
		t[k].sum = num;
		return ;
	}
	int mid = (t[k].l + t[k].r) / 2;
	if(i <= mid)insert_tree(i, num, 2 * k);
	else insert_tree(i, num, 2 * k + 1);
	t[k].sum = t[2 * k].sum + t[2 * k + 1].sum;
}
void search_tree(int l, int r, int k)
{
	if(t[k].l == l && t[k].r == r)
	{
		ss += t[k].sum;
		return ;
	}
	int mid = (t[k].l + t[k].r) / 2;
	if(r <= mid) search_tree(l, r, 2 * k);
	else if(l > mid) search_tree(l, r, 2 * k + 1);
	else
	{
 		search_tree(l, mid, 2 * k);
 		search_tree(mid + 1, r, 2 * k + 1);
	}
}
int main()
{
	int n, i, j, ans;
	while(scanf("%d", &n) != EOF)
	{
		ans = 0;
		build_tree(0,n-1,1);
		
		for(i = 0; i < n; i++)
		{
			scanf("%d", &a[i]);
			insert_tree(a[i], 1, 1);//每个数插入的值都为1 
			ss = 0;
			if(a[i] != n - 1)//最大的数的逆序数必为0 
			search_tree(a[i] + 1, n - 1, 1);
			ans += ss;//加上每个数的逆序数 
		}
		int minn = ans;
		for(i = 0; i < n; i++)
		{
			ans = ans + (n - 1 - a[i]) - a[i];
			if(ans < minn)
			minn = ans;
		}
		cout << minn <<endl;
	}
	return 0;
} 


mt7601 kernel 4.19内核集成版本,以及源码编译相关问题 /os/linux/Makefile.6文件: 添加 EXTRA_CFLAGS += -Wno-incompatible-pointer-types -Wno-date-time。看下iwpriv与iwconfig的源码区别,左侧为iwconfig ,没有用到ioctl,右侧为iwpriv。1、init_timer kernel 4.19内核版本API已经改变,使用timer_setup。使用iwpriv 提示如下,iwpriv工具无法使用了,而iwconfig可以使用。makefile的修改。 阅读详情

相关推荐

部署资源管理系统chemx

资源管理系统的部署教程

weixin_40784215的博客 822

HDU 1394 Minimum Inversion Number // 线段树求逆序数

题目描述HDU 1394 Minimum Inversion Number解题思路题目大意: 给出0~n-1的一个排列,每次可以把前m个数放在后面,eg: a1{a}_{1}, a2{a}_{2}, …, an−1{a}_{n-1}, an{a}_{n} (m=0)(m = 0 ) a2{a}_{2}, a3{a}_{3}, …, an{a}_{n}, a1{a}_{1}

FZU_zyt的专栏_(:з」∠)_ 414

Palabos User Guide中文解读 | 第一章 | 介绍

译者的话:本人在学习palabos时,发现国内中文资料甚少,恰好网上可以直接搜到palabos user guide这种英文资料,加之时间充裕,便打算开始翻译,能不能完成全本翻译再说,而且文中我也会标记我不确定的地方,以传达意思为主,翻译不当的地方还请各位读者帮忙指正。 Palabos User Guide Release 1.0 r1 Copyright © 2019 University of...

Yulan Fang's notes. 6977

hdu1394(Minimum Inversion Number)线段树

明知道是线段树,却写不出来,搞了半天,戳,没办法,最后还是得去看题解(有待于提高啊啊),想做道题还是难啊。 还是先贴题吧 HDU-1394 Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s)...

weixin_30709809的博客 96

基础的pdf病毒木马

基础的pdf病毒木马 环境: 攻击机:Kali 目标操作系统:Windows 10或Windows 7 (关闭防火墙和安全软件) 目标软件:Adobe Reader 8.1.2 msf框架搜索:adobe-pdf 1.打开msfconsole 2.搜索 adobe_pdf模块 3.加载攻击模块并设置payload 4.运行生成pdf 5.将pdf拖入到win10 6.打开msf,加...

小小猪的博客 4623

发那科机器人karel程序

备份和查看发那科机器人中的 Karel 程序的过程主要包括从示教器中备份程序,并通过 RoboGuide 等仿真软件查看和运行程序。步骤相对简单,但需要确保你的设备和软件已经设置好,可以通过 FTP 或直接从示教器的外部存储设备进行操作。如果你在操作过程中遇到问题,建议查阅相关的用户手册或联系发那科的技术支持,确保设备设置正确。如果你有更具体的问题或需要进一步帮助,欢迎继续提问!希望如上措施及解决方案能够帮到有需要的你。

**My Coding Family** 1600

[HDU 1394]Minimum Inversion Number[逆序对][线段树]

题目链接:[HDU 1394]Minimum Inversion Number[逆序对][线段树] 题意分析: 实质上来说,这道题就是求n个小于n的数的排列变成环之后,从其中某一点切开的最小逆序对数。 解题思路: 第一步:求出初始逆序对数。可以用归并排序,这里我用了线段树。 能使用线段树的理由:线段树存储的是一个区间段的值,应用到求逆序对数,我们就可以让它初始时都为0,每次加入一个数x前

闲停 819

【异常】QClaw客户端安装失败(OpenClaw资源解压出错)问题排查与修复指南: 安装失败:OpenClaw 资源解压出错。 请重新安装或联系支持。

摘要:QClaw客户端安装失败报错"OpenClaw资源解压出错"的主要原因是资源包解压异常,常见于安装包损坏、系统权限不足、安全软件拦截、旧版本残留或系统环境问题。解决方案分三步:1)快速修复:重新下载安装包、管理员权限运行、关闭安全防护;2)深度修复:清理旧版本残留、修复系统组件;3)终极方案:收集日志联系官方支持。建议优先检查安装包完整性并使用纯英文安装路径,80%问题可通过快速修复方案解决。

奶爸的编程之路,也就一周冷个三天 382

hdu 1394 Minimum Inversion Number 线段树

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 先求出原串的逆序数,然后每次最前一个数放在最后逆序数的变化量为 : n-2*num[i]-1 ,解释如下 因为每次都是把最前一个数num[i]换到最后,也就是说此时比num[i]小的数全在其后,也就是有num[i]组逆序数对,于是ans-=num[i] (减去这个数原有的逆序数对) 然后放在最

yjCola 576

《唤醒你的AI同事:WorkBuddy从零上手》004:与其他 AI 工具的对比

把 WorkBuddy 与聊天机器人、办公套件内置 AI、自动化工具逐维对比,并按当前版本补充四项新差距:结果交付、连接器广度、资料库与多模态产出。

LuckyHanMo的博客 665

COMSOL介电弹性体数值仿真指南:预拉伸圆形DEA的稳态变形分析(II)

本期博客是《COMSOL介电弹性体数值仿真指南》系列博客中的一期。聚焦于介电弹性体驱动器(DEA)中最为经典的预拉伸圆形DEA驱动器构型,对其在COMSOL平台中的具体建模步骤进行介绍与讨论。

忘了面孔的Batou 353

【线段树I:点修改+区间查询】hdu 1394 Minimum Inversion Number

【线段树】hdu 1394 Minimum Inversion Number题目链接:hdu 1394 Minimum Inversion Number题目大意给你N个数的排列,求包括该序列在内的所有循环序列的最小逆序对数(N<5000) 暴力的话O(n^3)直接超时,线段树一开始还真不好想啊!最关键的是弄明白每个节点中的sum代表什么意思:【lc,rc】区间出现的数的个数,因为这道题n个数大小0

Hacker_vision 763

ATE FT ChangeKit学习总结-20250630

半导体封装测试中的ChangeKit是Handler测试机的关键配套治具,主要用于适配不同芯片封装尺寸的FT测试。其主要特点包括:1)适应性,可快速切换不同测试设置;2)精准性,确保器件测试安全;3)高效性,减少停机时间。主要组件含Shuttle传送机构、HotPlate预热盘、DockPlate连接件和Contactor压头。设计需考虑Handler型号、芯片规格及PCB匹配(如140mm标准孔位),特别在低温测试时需注意吹气块布局。ChangeKit实现了测试设备的灵活配置,提升了半导体测试效率。

歌颂苦难的行为是无耻的; 1745

HDU1394 Minimum Inversion Number 线段树+数学

Problem DescriptionThe inversion number of a given number sequence a1, a2, …, an is the number of pairs (ai, aj) that satisfy i < j and ai > aj.For a given sequence of numbers a1, a2, …, an, if we move

Bill_Utada的成长之路 1077

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

hdu 1394 Minimum Inversion Number(线段树)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 题目大意:求数组的逆序数和,然后把第一个元素放最后,求一个新的逆序数和,重复操作,问最小的逆序数是多少。 数组大小为n,元素为0-n-1的数,且不重复。题目说了是a permutation of the n integers from 0 to n-1. 。 分成两步:先求原数

Algobird 507

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

hdu1394 Minimum Inversion Number (线段树)

http://acm.hdu.edu.cn/showproblem.php?pid=1394 Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 27295Acc...

卑鄙的我 157

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

HDU1394 Minimum Inversion Number 线段树

传送门:HDU1394 题意:给定1-n的一个排列,可以将前面任意多个数按顺序放到后面形成新的序列,问所有这些序列中逆序数最小值为多少。 思路:只要求出第一个序列的逆序数来,其他序列的逆序数就可以递推出来,因此重点在于第一个序列的逆序数怎么求,因为数据范围较小,可以考虑用树状数组或者线段树维护1-n每个点,出现过就更新为1,否则为0,则每个数产生的逆序数(即每个元素对总逆序数的贡献)就可以在输

WA是一笔财富 266

HDU 1394 Minimum Inversion Number 线段树

Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 17537    Accepted Submission(s): 10640 Problem Description The

学 以致用 236

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

http://acm.hdu.edu.cn/showproblem.php?pid=1394 题意:有0~n-1数字组成的序列,然后进行这样的操作,每次将最前面一个元素放到最后面去会得到一个序列,每得到一个序列都可得出该序列的逆序数(如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数)。要求求出最小的逆...

aocang4831的博客 219

HDU1394——线段树——Minimum Inversion Number

Description The inversion number of a given number sequence a1, a2, ..., an is the number of pairs (ai, aj) that satisfy i < j and ai > aj.For a given sequence of numbers a1, a2, ...,...

dgjm4087的博客 125

hdu 1394 Minimum Inversion Number 【线段树查找】

Problem Description The inversion number of a given number sequence a1, a2, ..., an is the number of pairs (ai, aj) that satisfy i aj. For a given sequence of numbers a1, a2, ..., an, if we mov

ACM_e的博客 368

Minimum Inversion Number 【HDU - 1394】【线段树维护逆序对数】

题目链接 我们可以移动首点放到队尾上去,问的是这样的N种组合种,逆序对数量最小的那一对。 我们可以利用线段树O(N*log(N))的求出初始时候的逆序对的个数,每次往后塞进去一个,将头放到尾上去,然后呢,会发现,我们把头放到尾,少掉的对逆序对的贡献是a[i] - x(a[i]个比它小的点),多出来的对逆序对的贡献是N - 1 - a[i] - x(x指的是原本有x个"<a[i]"...

既然弱小,就只顾变强就是了 244

HDU1394 Minimum Inversion Number(线段树)

Problem Description The inversion number of a given number sequence a1, a2, ..., an is the number of pairs (ai, aj) that satisfy i aj. For a given sequence of numbers a1, a2, ..., an, if we mov

蒟蒻升级中...Orz 934

HDU 1394 Minimum Inversion NumberMinimum Inversion Number(线段树)

http://acm.hdu.edu.cn/showproblem.php?pid=1394 部分来自http://blog.youkuaiyun.com/libin56842/article/details/8531117 写给那些 刚入门线段树,开始和我一样对解题迷茫的人. 题意 求最小逆序数 逆序数的概念 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就

小小码农 490

HDU1394 Minimum Inversion Number(线段树)

Minimum Inversion NumberTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 17169 Accepted Submission(s): 10439Problem Description The inversio

MrBlank的ACM记事本 505
上一篇: NYOJ 117 求逆序数 (树状数组 + 离散化思路)
下一篇: HDU 1823 Luck and Love (二维线段树模板)
LiQiyaoo
博客等级 码龄11年 337粉丝 206原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值