区间第k大
题目大意: 一个区间的价值定义为该区间中的最大值减最小值 给定 n 个数,求所有区间价值中,第 k 大值为多少。n是40万 显然对于一个右端点,左端点越靠左挪动,得到的价值,只能是递减或者是不降的
并且一定存在一个确切的位置,满足在这个位置左边(作为左端点)所得到的价值大于等于二分出来的mid,在这个位置右边一定小于
其中最大最小值用单调队列来维护
1 | int judge(int x) |
注意是mid=(l+r+1)/2
因为我们想得到的在小于等于某个范围内的最大值
题目大意: 一个区间的价值定义为该区间中的最大值减最小值 给定 n 个数,求所有区间价值中,第 k 大值为多少。n是40万 显然对于一个右端点,左端点越靠左挪动,得到的价值,只能是递减或者是不降的
并且一定存在一个确切的位置,满足在这个位置左边(作为左端点)所得到的价值大于等于二分出来的mid,在这个位置右边一定小于
其中最大最小值用单调队列来维护
1 | int judge(int x) |
注意是mid=(l+r+1)/2
因为我们想得到的在小于等于某个范围内的最大值