2041. 干草堆
作者:
cyuyu
,
2022-01-08 14:47:52
,
所有人可见
,
阅读 178
本题对应的模板为差分模板,涉及到排序问题,本题可以使用多种排序方式,这里简单介绍sort函数排序和nth_element
[](https://blog.csdn.net/weixin_41544662/article/details/90760414)
sort 函数对整个数组进行排序,nth_element对某个位置的元素进行确定
,但是只是大致排序并没有精排,如对下标从0开始的数组取下标为2的数
,nth_element(a,a+2,a+n),注意:求第k小的数而非第k大的数,
详情 [STL nth_element() 求第k小/第k大](https://https://www.acwing.com/blog/content/5406/)
在 [786. 第k个数](https:///www.acwing.com/problem/content/788/) 中真的特别简单
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e6+10;
int s[N],b[N];
void insert(int l,int r,int t){
b[l]+=t;
b[r+1]-=t;
}
int main(){
int m,n;
cin>>m>>n;
for(int i=1;i<=m;i++){
insert(i,i,s[i]);
}
int l,r;
while(n--){
cin>>l>>r;
insert(l,r,1);
}
for(int i=1;i<=m;i++){
s[i]=s[i-1]+b[i];
}
//sort(s,s+m+1);
nth_element(s+1,s+m/2+1,s+m+1);
cout<<s[m/2+1];
return 0;
}