题意:给出N个数,M个询问,对于每个询问,有一组[L,R],输出这个区间内所有子区间的GCD和。
范围:T<=3,N,M<=10000
解法:离线处理+暴力,从右至左,处理出加入一个新数a[pos]时,以pos为左端点时,R作为右端点时的gcd,R∈[pos,N],这些GCD记为b[pos,R],可知每个数最多改变logN次,所以求解出所有阶段的b[]只需要nlogn的复杂度。对于每个询问,即是B[L,R]+B[L+1,R]....+B[R,R],最坏情况下是O(N),M个询问,复杂度为O(N*M)
正解应该是莫队,有待学习,此方法900ms卡过。
#include
#include
#include
#include
#include
#include
#include
#include