1 条题解

  • 1
    @ 2025-11-15 14:26:51

    新手差分题 题目大意:k个操作,每次一个区间,区间中每个元素加1,最后输出中位数 思路:利用差分O(1)修改,最后查询。

    #include<bits/stdc++.h>
    #define int long long
    #define void inline void
    using namespace std;
    int a[1000010],c[1000010];
    signed main(){
    	int n,k;
    	cin>>n>>k;
    	while(k--){
    		int l,r;
    		cin>>l>>r;
    		c[l]++;
    		c[r+1]--;
    	}
    	for(int i=1;i<=n;i++){
    		a[i]=+a[i-1]+c[i];
    	}
    	sort(a+1,a+n+1);
    	int mid=(1+n)/2;
    	cout<<a[mid];
    	return 0;
    }

    信息

    ID
    79
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    (无)
    递交数
    29
    已通过
    15
    上传者