hdu 1394 逆序数

hdu 1394(线段树求逆序数) 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 题意描述:给你一个有0--n-1数字组成的序列,然后进行这样的操作,每次将最前面一个元素放到最后面去会得到一个序列,那么这样就形成了n个序列,那么每个序列都有一个逆序 阅读详情

Minimum Inversion Number

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


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
 

Recommend
Ignatius.L
 


 比较简单的题目,先用归并的方法求出初始序列的逆序数cnt,每次将第一个数放到最后,cnt减去小于这个数的数量,再加上大于这个数的数量,答案就是cnt出现过的最小值



#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;

#define maxn 5005

int a[maxn];
int a1[maxn];
int b[maxn];

int get_inver(int *a, int l, int r)
{
    if(l==r) return 0;

    int ret = 0;
    int m = l+(r-l)/2;

    ret += get_inver(a, l, m);
    ret += get_inver(a, m+1, r);

    int i=l, j=m+1;
    int cur = l;
    while(cur<=r){
        if(i<=m && (a[i]<=a[j]||j>r)){
            b[cur++] = a[i++];
            ret+=cur-i;
        }
        else if(j<=r && (a[j]<a[i] || i>m)){
            b[cur++] = a[j++];
            if(cur>j) ret+=cur-j;
        }
    }

    for(int i = l ; i <= r; i++)
        a[i] = b[i];

    return ret;
}

int main()
{
    int n;
    while(scanf("%d", &n)!=EOF){
        for(int i = 0; i < n; i++)
            scanf("%d", a+i);
        memcpy(a1, a, sizeof(a));

        int cnt = get_inver(a, 0, n-1);

        int ans = cnt;
        for(int i = 0; i < n; i++){
            cnt-=a1[i];
            cnt+=(n-1-a1[i]);
            ans=min(ans,cnt);
        }

        printf("%d\n", ans);
    }

    return 0;
}


DSSAD自动驾驶行车记录系统体系结构和应用 通过对其感知、决策、控制等模块的详细研究,以及对商业化和消费市场发展趋势的分析,为该领域的研究和实践提供有价值的参考。通过克服技术、安全与隐私、法规与政策等方面的挑战,并紧跟人工智能、云端服务、用户体验等发展趋势,DSSAD系统将更好地适应自动驾驶行业的发展,提供更安全、智能、便捷的驾驶辅助服务。DSSAD体系结构通过数据收集模块、加密链接和数据存储模块和数据读取模块等关键模块的协同作用,构建了一个强大而灵活的自动驾驶数据记录系统,为未来智能出行提供了坚实的技术基础。 阅读详情

相关推荐

Frida提取Cocos游戏XXTEA密钥的实战方法论

XXTEA是一种轻量级分组加密算法,广泛用于移动端游戏通信保护;其128位密钥的安全性直接决定网络协议逆向成败。在Cocos引擎生态中,密钥常以静态常量、JNI动态传递或Native运行时派生三种形态存在,导致传统静态分析失效。Frida凭借跨Java/Native注入能力与内存实时观测优势,成为捕获密钥‘出生瞬间’的关键工具——尤其适用于hook xxtea_encrypt函数入口、监控JNI参数传递、设置内存断点追踪派生过程等场景。本文聚焦Cocos2d-x与Cocos Creator项目,覆盖从密钥识

weixin_33509600的博客 418

USB-0-基础概念

1.USB特性 不同设备类型,统一接口 支持热插拔 灵活的供电方式 多级速率支持 2.分类 OHCI主要为非PC系统上以及带有SiShe ALi芯片组的PC主板上的USB芯片 UHCI大多为Intel和Via主板上的USB控制器芯片。UHCI的硬件电路比OHCI简单,成本第,但驱动复杂。但他们都是由USB1.1规格的。 EHCI是有Intel等几个厂商研发,兼容OHCI UHCI 遵循USB...

weixin_34329187的博客 235

Zephyr RTOS -- 学习笔记总述

文章目录摘要1. 开发基础部分2. 内核服务入门 本笔记基于 Zephyr 版本 2.6.0-rc2 摘要 1. 开发基础部分 2. 内核服务入门 2.1 线程简介 2.2 线程 2.3 工作队列线程 2.4 调度 2.5 中断 2.6 轮询 API 2.7 信号量

思想给了我们太多的自由,而我们拖累了思想...... 4825

USB2.0速度识别

我们知道USB2.0向下兼容USB1.x,即高速2.0的hub能支持所有的速度类型的设备,而USB1.x的hub不能支持高速设备(High Speed Device)。因此,如果高速设备挂到USB1.x的hub上,那该设备只能工作在全速模式下。不管是hub还是设备(device),对于速度的区分是非常重要的,否则,后续的通信根本无法进行。全速和低速识别      根据规范,全速(Full Speed)和低速(Low Speed)很好区分,因为在设备端有一个1.5k的上拉电阻,当设备插入hub或上电(固定线缆

myq889的专栏 501

别再傻傻分不清!直流有刷、无刷、步进电机,3分钟教你根据项目需求选对电机

本文深入解析直流有刷电机、无刷电机和步进电机的核心差异与应用场景,提供电机选型的黄金法则。通过性能参数对比、成本分析及典型应用案例,帮助工程师根据项目需求精准选择电机类型,避免常见选型误区。特别适合机器人、3D打印等领域的开发者参考。

weixin_29183637的博客 340

10分钟学会工程领域Hypermesh与Abaqus联立处理大量铆钉连接简化做法

铆钉连接是一种可靠且高强度的机械连接方式,广泛应用于多个领域。但是,工程结构上铆钉连接往往以较大的数量出现,若按照常规的一个个去选择生成,处理1个铆钉连接点需要1分钟来算,300个铆钉需要5个小时,耗费大量的时间成本。给出了一种高效处理铆钉连接的方法,提升效率50倍以上。

qq_34933927的博客 1615

MOOC慕课网-人工智能产业应用前沿-第六讲测验

第六讲测验   1单选(2分):与"一维Tensor (张量)"最相近的词是什么? A.大数据 B.矩阵 C.一份麻辣烫 D.向量 正确答案:D   2单选(2分):机器学习能够在现实生活中有效应用的前提假设,以下叙述中最为准确的是什么? A.所有选项全部正确 B.有机器 C.algorithm在offline training的过程中看到的数据,和我在online pre...

suxiaorui的博客 2275

人体红外传感器HC-SR501

本文记录的是如何用stm32使用HC-SR501。实验平台:野火指南者stm32f103vet6。实验现象:一旦有人体经过,LED会亮红色。HC-SR501 传感器工作原理人体都有恒定的体温,一般在 37 度,所以会发出特定波长 10UM 左右的红外线,被动式红外探头就是靠探测人体发射的 10um 左右的红外,进行工作的。人体发射的 10um 左右。

weixin_43772611的博客 1万+

HDU-1394 线段树+逆序数

思路 查询该数到n已经插入的个数,再单点更新该数sum[root]=1,最后求出所有的逆序数的个数。 每次换到后面,说明小于a[i]有a[i]个数 大于a[i]有n-a[i]-1个数 说明少了有a[i]个逆序数 多了n-a[i]-1个逆序数。 import java.util.Scanner; public class Main_HDU1394 { static int n; st...

weixin_45948204的博客 152

acados安装与调试指南:版本兼容性问题

在计算机编程领域,软件工具和库的安装与调试是每个开发者必经的挑战。最近,在安装和使用acados库时,我遇到了一个有趣的问题,这里我将详细分享我的经验和解决方案。

m0_62153576的博客 740

【电容/电感】电路板会“滋滋”的响,我们称它为啸叫

一、啸叫的起源 大部分硬件工程师应该都遇到过,PCBA上电后出现“滋滋滋”的叫声,其声响或大或小,或时有时无,或深沉或刺耳,或变化无常者皆有。该现象我们称为“啸叫”,一般分为电感啸叫和电容啸叫。

云轩阁 6万+

hdu1394 线段树求最小逆序数

hdu 1394 http://acm.hdu.edu.cn/showproblem.php?pid=1394 用线段树求逆序数,例如要求x的逆序数只需要访问(x+1,n)段有多少个数,就是x的逆序数。还有就是求最小逆序数的时候有个巧妙的想法,当把x放入数组的后面,此时的逆序数应该为x没放入最后面之前的逆序总数加上(n-x)再减去(x-1);sum = sum+(n-x[i])-(x[i]-1

http://kingim.cn/ 1145

详细解释SigLIP的原理,为什么有些多模态模型喜欢用他?怎么应用于机器人控制呢

详细解释SigLIP的原理,为什么有些多模态模型喜欢用他?怎么应用于机器人控制呢。

具身机器人和通用AI 1230

线段树求逆序数(hdu-1394)

hdu-1394 (1)解题思路: 求出第一个序列的逆序数num1,第二个序列的逆序数为num2 = num1-(n-a1-1)-a1(公式1),得到num2, 以此类推求出numi,找到最小值。 (2)线段树求解逆序数: 每次找到a[i]~n-1的位置的存在的数字的个数,可以先查询,再更新。 (3)公式1的推导 已知序列是0~n-1个不同的数字的排序, 第i个序列分别为: ...

积少成多,水滴石穿 238

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

hdu1394(线段树求逆序数)

题目链接:hdu1394 思路: 先用线段树求出原始序列的逆序对数。 序列中的n个数的范围是0~n-1,这点需要注意,根据这点可以很快速的求出改变后的序列的逆序对数。把位于第一位的num[i]移到最后一位,则变化的逆序对数是在上一个序列(即num[i]为第一位的序列)的基础上加上比num[i]大的数的个数,再减去比num[i]小的数的个数(因为num[i]移到最后以后,只能与前面比他大的数构

no pains,no gains 1347

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

线段树求逆序数 hdu 1394 Minimum Inversion Number

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

黑山老猴妖的专栏 700

hdu 1394 Minimum Inversion Number(最小逆序数) 线段树/暴力

传送门:hdu 1394 Minimum Inversion Number题目大意给定n个数,求这个数组最小逆序数。 可能有很多人对逆序数不太了解,在这里科普一下:对于n个元素来讲,他们之间遵循一个标准次序(比如说从小到大排列下去),于是在这个n个元素的任意排列中,当某两个元素不符合这个标准次序的时候,就说这事一个逆序。一个排列中的所有所有逆序之和叫做这个排列的逆序数。这个题目当中,元素的标准次序

woshinannan的专栏 512

线段树求逆序数 HDU 1394 POJ2299

线段树求逆序数模板 #include<iostream> #include<cstdio> #include<string.h> using namespace std; const int maxn=1e5+5; struct node{ int l,r,value; }tree[maxn<<2]; void build(int m,int l,...

青春苦瓜 211

hdu1394最小逆序数——线段树

线段树较于树状数组更好理解一些,其基本就是核心就是一个结构体(树的每个点),一个build函数,一个update函数,一个Query函数。struct Tree { int left,right,max;//其中左右节点和需要存储的有用的东西,这个视情况而定,可以是这个区间内的最大值,也可以是这个区间的和等等。 };线段树是一个二分法的巧妙应用,分到左=右就结束了。 下面分享看线段树遇到的

Gloria971111的博客 512

HDU 1394 Minimum Inversion Number(逆序数)

题目链接:HDU 1394 Minimum Inversion Number

RaynX的专栏 523

hdu 1394 Minimum Inversion Number(线段树求最小逆序数)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1394 题目大意:   给出N个数,这些数可以把后面的删掉然后放到最前面形成新的序列                  可得到的N种情况,求出这N种情况哪种的逆序数最小 解题思路:   先求出第一个序列的逆序数,然后用很巧妙的办法求下一个序列的逆序数,直到全部求出       

The_star_is_at的博客 355

HDU 1394 Minimum Inversion Number(线段树,逆序数)

题目链接:HDU 1394 题意 给出一个(0,n-1)的任意排列,将序列中的第一个数移到最后的位置,产生新的序列。问在所有产生的序列当中,逆序数最小的是多少? 思路 我们可以发现第一个数x[i]后面有x[i]个数比x[i]大,有n-x[i]-1个数比x[i]小,所以将序列第一个数x[i]移到后面,逆序数(sum)的改变为 sum+=n-x[i]-1-x[i]; 所以我们需要求出初始序列的逆序数,由于数据小,可以暴力求逆序数,,也可以用归并排序求逆序数,下面代码用线段树求逆序数。 线段树求逆序数思路 遍历待

glide的博客 189

HDU 1394 Minimum Inversion Number(线段树求最小逆序数对)

HDU 1394 Minimum Inversion Number(线段树求最小逆序数对) ACM 题目地址:HDU 1394 Minimum Inversion Number 题意:  给一个序列由[1,N]构成,可以通过旋转把第一个移动到最后一个。  问旋转后最小的逆序数对。 分析:  注意,序列是由[1,N]构成的,我们模拟下旋转,总的逆序数对会有规律的变化。 

水果君の日常 2070

Hdu 1394 Minimum Inversion Number 单点更新,成段求逆序数

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 题目大意:给你0-

e的专栏 510
上一篇: cf 342c
下一篇: poj 1201 interval 差分约束/贪心+线段树区间更新
HuanTongH
博客等级 码龄12年 7粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值