分数规划、线段树
题意
给定长度为n的序列,在所有连续子序列中,求(不同数的个数/子序列的长度)的最小值.
- n<=60000
题解
- 二分答案mid,检验是否存在一个区间满足 size(l,r)/(r-l+1) ≤ mid,也就是 size(l,r) + mid × l ≤ mid × (r + 1)。
- 从左往右枚举每个位置作为 r,当 r 变化为 r + 1 时,对 size 的影响是一段区间加 1,线段树维护区间最小值即可。
- 时间复杂度 O(nlognlogw)。
代码
|
|
I good vegetable a.
分数规划、线段树
题意
给定长度为n的序列,在所有连续子序列中,求(不同数的个数/子序列的长度)的最小值.
- n<=60000
题解
- 二分答案mid,检验是否存在一个区间满足 size(l,r)/(r-l+1) ≤ mid,也就是 size(l,r) + mid × l ≤ mid × (r + 1)。
- 从左往右枚举每个位置作为 r,当 r 变化为 r + 1 时,对 size 的影响是一段区间加 1,线段树维护区间最小值即可。
- 时间复杂度 O(nlognlogw)。
|
|