HDU 1394 Minimum Inversion Number (线段树)

实现Win10环境下的MATLAB与虚拟机Ubuntu中的ROS的通讯的方法    本文主要介绍如何实现Win10环境下的MATLAB与虚拟机Ubuntu中的ROS的通讯,虚拟机我采用的是VMware16.1.1中安装了Ubuntu20.04,并安装ROS Noetic 版本    一、虚拟机Ubuntu中配置    1、在ubuntu终端输入以下命令查看本机地址 ifconfig    如下图所示我目前的IP是192.168.3.128    2、将本机IP写入到.bashrc文件    打开home文件夹,按Ctrl+h显示隐藏的文件,选择.bashrc并打开( 阅读详情

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
 


求最小逆序对数,什么事逆序数呢? 这是对于两个数来说的,例如   2   1,   2在1的前面,2却比1大,那么就是一对逆序对数,
题目求将序列头一个依次放到末尾,这么多序列中逆序对数最少的输出来


首先数据太大,应该用线段树,线段树里面存储的是le  到 ri 的数的数量,例如输入  3,我们就要查询  0到3有多少个已经存在的数
,废话不多说了,直接看代码吧


#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>

#define L(x) (x<<1)
#define R(x) (x<<1|1)
#define MID(x,y) ((x+y)>>1)
using namespace std;
#define N 5005

int a[N];

struct stud{
int le,ri;
int va;
}f[N*4];


void build(int pos,int le,int ri)
{
    f[pos].le=le;
    f[pos].ri=ri;
    f[pos].va=0;
    if(le==ri)  return ;

    int mid=MID(le,ri);

    build(L(pos),le,mid);
    build(R(pos),mid+1,ri);
}

void update(int pos,int le)
{
    f[pos].va++;

    if(f[pos].le==le&&f[pos].ri==le)
        return ;

    int mid=MID(f[pos].le,f[pos].ri);

    if(mid>=le)
        update(L(pos),le);
    else
        update(R(pos),le);
}

int query(int pos,int le,int ri)
{
    if(f[pos].le>=le&&f[pos].ri<=ri)
        return f[pos].va;

    int mid=MID(f[pos].le,f[pos].ri);

    if(mid>=ri)
        return query(L(pos),le,ri);
    else
        if(mid<le)
        return query(R(pos),le,ri);

    return query(L(pos),le,mid)+query(R(pos),mid+1,ri);
}


int main()
{
    int n,m,i;
    while(~scanf("%d",&n))
    {
        int ans=0;
        build(1,0,n);

        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
            ans+=query(1,a[i],n-1);
            update(1,a[i]);
        }

        int temp=ans;

        for(i=0;i<n;i++)
        {
            temp=temp-a[i]+n-a[i]-1;

            if(temp<ans)
                ans=temp;
        }

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







Python爬虫实战:利用Selenium与异步技术高效获取雪球财经数据 雪球财经作为国内领先的投资社交平台,汇聚了大量股票数据、财经资讯和投资者观点。对于金融数据分析师、量化投资者和研究人员来说,获取雪球平台的实时数据具有重要价值。然而,雪球网站采用了多种反爬虫机制,包括动态内容加载、请求频率限制和用户行为检测等,使得传统爬虫技术难以有效获取数据。本文将介绍如何使用Python的最新爬虫技术,包括Selenium WebDriver、异步请求处理和智能等待策略,来高效、稳定地爬取雪球财经数据。我们将重点解决以下几个技术难点:动态加载内容的处理登录状态维持与模拟。 阅读详情

相关推荐

Rasa Core开发指南

文章目录1. Rasa Core简介1.1 Rasa Core消息处理流程1.2 安装Rasa Core2. Dialogue模型训练2.1 Story样本数据2.2 Domain2.2.0 intents2.2.1 actions2.2.2 templates2.2.3 entities2.2.4 slots3 .训练和使用对话模型3.1 训练对话模型3.2 使用对话模型4. 搭建CustomA...

老蒋也疯狂 1万+

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

STM32外部中断与事件机制深度解析:从硬件触发到软件响应

本文深入解析STM32外部中断与事件机制,从硬件触发到软件响应的完整流程。通过对比中断和事件的应用场景、响应速度及配置方法,帮助开发者优化嵌入式系统设计,特别适合需要低功耗或高实时性的项目。

weixin_29175469的博客 408

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

Anolis龙蜥内核升级实战:从查询到配置的全流程指南

本文提供了一份详尽的Anolis龙蜥操作系统内核升级实战指南。文章从升级的必要性出发,逐步讲解了升级前的系统检查与备份、从官方源获取正确内核包、分步安装与验证、配置默认启动项以及升级后的功能验证与安全回滚方案。旨在帮助运维人员安全、平稳地完成内核升级,以获取性能提升、新硬件支持及重要的安全漏洞修复。

qq_27496129的博客 571

基于物联网技术智慧园林绿化养护管理信息平台

近几年来,随着经济不断的发展,城市面积不断的扩大,城市管理中的园林绿化工作也在这种趋势下不断的发生着深刻改变。管养企业是否按制定的管养计划严格执行?绿化事件整改是否及时到位?绿地面积是否在稳步增长?管养的效果如何?如何客观评价管养企业的管养工作?这些都是我们各级管理者需要面对的问题。   智慧园林绿化养护管理信息平台的开发思路以“考核”为核心,整个信息平台体现出“新、快、高、全、享”五个特点。   智慧园林绿化养护管理信息平台的整个开发理念为:依托五大技术手段(全球卫星定位系统技术、地理信...

Cesium的博客QQ2252224326 2458

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

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

闲停 819

【STM32CubeIDE入门】(一)工程创建&工程配置

​写在前面:如果是刚接触stm32cubeide的同学推荐与这一篇文章共同阅读,能够更加快速认识上手stm32cubeide。 1、打开stm32cubeide,选择好工作目录进入主界面后,点击创建工程。

涛涛子的博客 1万+

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

Unity之OpenXR+XR Interaction Toolkit实现 Gaze眼部追踪

在虚拟现实(VR)和增强现实(AR)应用中,眼动追踪是一项强大而受欢迎的技术。它可以让开发者更好地理解用户的注意力和行为,并创造出更加沉浸和智能的体验。在本文中,我们将探讨如何使用 Unity OpenXR 实现Gaze眼部追踪功能。

TxNet 1751

UFS软件分区介绍

本文主要介绍了ufs软件分区管理的概况,能够使大家对软件分区有个大体的认识

肥匪斐's blogs 1万+

【线段树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

android 蓝牙通讯demo

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

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电路设计。

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

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

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

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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

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
上一篇: HDU 1243 畅通工程 并査集
下一篇: HDU 1698 Just a Hook (线段树区间更新)
左眼皮跳跳~
博客等级 码龄13年 17粉丝 400原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值