2024百度之星初赛第二场 叠砖块 难度:钻石 题型:差分

156 阅读1分钟

码题集OJ-叠砖块 (matiji.net)

image.png 首先需要知道中位数的定义:

样例解析

image.png

根据中位数计算公式:

image.png

可以得知样例的中位数为3:

image.png

code

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int n,m;cin>>n>>m;
    vector<int> a(n,0);
    for(int i=1;i<=m;i++)
    {
        int l,r;cin>>l>>r;
        a[l]++,a[r+1]--;
    }

    //恢复
    for(int i=1;i<=n;i++)
    {
        a[i]=a[i]+a[i-1];
    }
    sort(a.begin(),a.end());
    //判断
    if(n%2==0)
    {
      cout<<(a[n/2]+a[n/2+1])/2;
    }
    else cout<<a[n/2];
    return 0;
}

image.png