ACM算法训练【逆序对的数量】

简介: ACM算法训练【逆序对的数量】


题目说明


9f2d07973c5240c29b1327b276c39fd7.png


数据范围


e50c2252e97a4d1a8833c06b2ea16656.png


样例


d4aaf96819c64631987353be69807bd9.png


代码


①归并排序基本思想:


02bc5178209145a1982ef871fe027287.png


②在归并的过程中,逆序对出现的三种情况:


304777cf69674ee98d11ca7ca24d9511.png


a.全部出现在左边的区间

b.全部出现的右边的区间

c.出现在左右两个区间


d8ed5cffd6f846adbfad96b63ca1d4a0.png


黄色情况的求解方法:


294f0ec54ca2456a99340a066e66ec23.png


找左边区间比右边区间每一个数大的个数,相加就是答案

在归并排序求出两个有序区间后,可以发现如下性质:


ebe4351a61824386b1c1c57411414b26.png


当qi在某一阶段大于qj,易得qi及后所有数都大于qj,也就是构成两边区间的逆序对


#include <bits/stdc++.h>
using namespace std;
const int N=100010;
int arr[N],temp[N];
long long msort(int l,int r)
{
    if(l>=r) return 0;  //递归边界
    int mid=(l+r)/2;   
    long long res=msort(l,mid)+msort(mid+1,r);   //划分区间
    int i=l,j=mid+1,k=0;
    while(i<=mid&&j<=r)  //归并过程
    {
        if(arr[i]<=arr[j]) temp[k++]=arr[i++];
        else
        {
            temp[k++]=arr[j++];
            res+=mid-i+1;
        }
    }
    while(i<=mid) temp[k++]=arr[i++];   //扫尾
    while(j<=r) temp[k++]=arr[j++];
    for(int i=l,j=0;i<=r;i++,j++)   //物归原主
        arr[i]=temp[j];
    return res;
}
int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++) scanf("%d",&arr[i]);
    long long res=msort(0,n-1);
    cout<<res;
    return 0;
}
目录
相关文章
|
3月前
|
存储 机器学习/深度学习 算法
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
蓝桥杯Python编程练习题的集合,涵盖了从基础到提高的多个算法题目及其解答。
134 3
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
|
2月前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
3月前
|
机器学习/深度学习 算法 决策智能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
|
3月前
|
算法 Java C++
【贪心算法】算法训练 ALGO-1003 礼物(C/C++)
【贪心算法】算法训练 ALGO-1003 礼物(C/C++)
【贪心算法】算法训练 ALGO-1003 礼物(C/C++)
|
3月前
|
算法 C++
蓝桥 算法训练 共线(C++)
蓝桥 算法训练 共线(C++)
|
6月前
knn增强数据训练
【7月更文挑战第27天】
47 10
|
6月前
knn增强数据训练
【7月更文挑战第28天】
51 2
|
6月前
|
人工智能 边缘计算 算法
破解ChatGPT惊人耗电!DeepMind新算法训练提效13倍,能耗暴降10倍
【7月更文挑战第20天】DeepMind unveils Switch Transformer, revolutionizing AI energy consumption. This novel algorithm boosts training efficiency by 13x and slashes energy use by 10x compared to ChatGPT, marking a significant leap towards eco-friendly AI.
60 2
|
5月前
|
算法 搜索推荐
支付宝商业化广告算法问题之基于pretrain—>finetune范式的知识迁移中,finetune阶段全参数训练与部分参数训练的效果如何比较
支付宝商业化广告算法问题之基于pretrain—>finetune范式的知识迁移中,finetune阶段全参数训练与部分参数训练的效果如何比较
|
5月前
|
存储 算法
【C算法】编程初学者入门训练140道(1~20)
【C算法】编程初学者入门训练140道(1~20)

热门文章

最新文章