我已经解决了这个问题 DQUERY
在N*Sqrt(N)
的时间复杂度中使用MO算法的问题。
但是,现在我想在每个查询上再增加一个约束,也就是说,现在每个查询都包含四个整数i,j,x,y
为:
(1 ≤ i ≤ j ≤ n)
(1 ≤ x ≤ y ≤ 10^6)
对于每个d查询(i,j),您必须返回子序列ai,ai + 1,...,aj中大于或等于x
且更小的不同元素的数量或等于y
。
例如:
如果n=5
数组元素为
1 1 2 1 3
然后,对于查询(i,j,x,y):
1 5 2 3
答案将是:
2
因为,在i=1
到j=5
的范围内,存在三个不同的元素{1,2,3}
,但只有两个元素{2,3}
出现在范围x=2
到{{ 1}}。所以anwer是y=3
。
我正在获得(Q * Sqrt(N) X) 的时间复杂度的解决方案,请帮助如何用有效的时间复杂度来解决这个问题/ strong>小于(Q Sqrt(N)* X)。