算法基础课 基础算法(三)区间和、区间合并

  • 首先输入数,记录其位置。
  • 接着把这些数整理好
  • 采用数轴上数的位置间接映射数组下标的方法。//离散化
  • 对这些在整理到a数组上的数,求前缀和。

(为什么要整理换一种映射方法,而不是 数轴上数的位置直接映射数组下标呢,因为这些数的位置范围大,如果采用直接映射,用数组来存储这些数,那么数组会过大)

    /*
    n组成对的数,数值及其位置,用PII类型的vector add
    m组询问,也是成对的数,左右端点,也用PII类型的vector query存 


    把这些数整理好

        PS:整理就是将其去重后排序unique、erase、sort

    将这些数存到一个数组a[N]里面

        PS:求alls中每个数的位置离散化之后的值(即间接映射到数组下标)

                即每个数的位置借助其数值find其对应下标

                借该数数值判断,改变下标,找到一个大于等于其数值的最小的数,从而得到x对应下标;

                找到后将数值插入到对应下标
    再对a[N]求前缀和s[N]
    */ 

#include <iostream>
#include <vector>
#include <algorithm>



int main()
{
    int n,m;
    cin>>n>>m;
    for(int i = 0;i<n;i++)
    {







    return 0;

}

区间合并 

goal:

 样例模拟:

   算法思路:

 1、所有区间按左端点排序

 2、有一个当前区间

         把所有区间从前往后扫描,找第i个区间与当前区间关系:

 区间内、有交集、无交集

         每种情况对所维护区间的影响 :

当前区间添上一部分

           新的当前区间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值