Processing math: 100%

BZOJ2506 : calc

在线做法:

若p不超过100,则可以先预处理,将所有满足a[x]%i=j的x从小到大放进链表q[i][j]中,查询时二分

预处理:O(100n)

查询:O(logn)

若p超过100,则满足条件的a[x]一定不超过100种

于是维护一个二维数组T,T[i][j]表示在前j个数里多有少个的权值是i

为了高速查询,可以将序列按每块100的大小分块,维护一个块状数组

查询时枚举所有可能的a[x],然后利用前缀和O(1)询问

预处理:O(100n)

查询:O(100)

 

  

 

posted @   Claris  阅读(276)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示