传送门 CodeChef - COUNTARI Arithmetic Progressions
题解求满足
2
a
j
=
a
i
+
a
k
,
i
<
j
<
k
2a_j = a_i + a_k,i 直接卷积后枚举
j
j
j,难以处理非法三元组的贡献;枚举
j
j
j 对左右两侧进行卷积,时间复杂度过高。 考虑分块,块大小为
c
c
c。 对于处于三个不同块的三元组, 枚举
j
j
j 所在块,对两侧块卷积,时间复杂度
O
(
n
2
/
c
log
n
)
O(n^2/c\log n)
O(n2/clogn)。 对于至少存在两个元素位于同一个块的三元组,暴力统计,时间复杂度
O
(
n
c
)
O(nc)
O(nc)。 块大小取
O
(
n
log
n
)
O(n\log n)
O(nlogn),总时间复杂度
O
(
n
n
log
n
)
O(n\sqrt{n\log n})
O(nnlogn
)。 欢迎分享,转载请注明来源:内存溢出#include
评论列表(0条)