51nod1056
题意
做法
定义:等差数列两个等差数列不同当且仅当任意相邻两项不同
结论:大小为\(n\)的集合长度至少为\(k\)的不同的等差数列个数是\(O(\frac{n^2}{k^2})\)
证明:
定义两个位置靠近为距离不超过\(\frac{n}{k-1}\)。可以发现相同的等差数列至少存在一对靠近的位置。
由鸽巢原理可知,一个长度为\(k\)的等差数列至少有\(\frac{k-1}{2}\)对靠近的位置。
显然集合内靠近的对数不超过\(\frac{n^2}{k-1}\),所以不同的等差数列不超过\(\frac{n^2}{k-1}/\frac{k-1}{2}=O(\frac{n^2}{k^2})\)
大小为\(n\)的集合长度为\(k\)的等差数列,根据鸽巢原理,有\(\frac{k}{2}\)项出现在前\(\frac{n}{2}\)项或后\(\frac{n}{2}\)项
\(T(n,k)\)找\(n\)集合长度至少为\(k\)的等差数列:分治左右两边\(\frac{k}{2}\)长度的等差数列,然后再扫一下另一边,用hash寻值
\(T(n,k)=2T(\frac{n}{2},\frac{k}{2})+O(\frac{n^2}{k^2}\times k)=O(\frac{n^2}{k}logk)\)