转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove
题目:给出n个数,选出三个数,按下标顺序形成等差数列
http://www.codechef.com/problems/COUNTARI
如果只是形成 等差数列并不难,大概就是先求一次卷积,然后再O(n)枚举,判断2 * a[i]的种数,不过按照下标就不会了。
有种很矬的,大概就是O(n)枚举中间的数,然后 对两边分别卷积,O(n * n * lgn)。
如果能想到枚举中间的数的话,应该可以进一步想到分块处理。
如果分为K块
那么分为几种情况 :
三个数都是在当前块中,那么可以枚举后两个数,查找第一个数,复杂度O(N/K