一类算法复合的方法课题.ppt

一类算法复合的方法 江苏省扬州中学 张煜承 问题描述 维护集合S,初始时为空。有N个操作需要依次处理 B X 在S中插入一个整数X A Y 询问S中被Y除余数最小的数,如果有多个则任取一个 1≤N≤40000,1≤X,Y≤R=500000 允许离线算法 初步分析 算法1:对询问中每个不同的Y,维护它对应的询问当前的答案 时间复杂度为O(N2),不能解决问题 但当询问中出现的不同Y的个数比较少时会很快,时间复杂度可以写成O(不同Y的个数×N) 进一步分析 当遇到一个询问A Y时,要在S中寻找使得x mod Y最小的数x 把这里的x写成kY+r,其中0≤rY,k和r是整数 也就是说,我们要在集合S中,寻找使得r最小的数kY+r 算法2:枚举k,找[kY,(k+1)Y)中的最小值。最后在这些最小值中取最优的 一个例子 S={2,3,6,8} Y=5 0 1 2 3 4 5 6 7 8 9 10 … 最小值为2 最小值为6 2 mod 5 = 2 6 mod 5 = 1 因此取6 现在的问题:询问S中给定区间[a,b]内的最小数 可以看成是询问≥a的最小数q(a) 0 1 2 3 4 5 6 7 8 9 10 … a q(a) 2 2 2 3 6 6 6 8 8 +∞ +∞ … 对很多连续的a,q(a)是相等的 形成了若干个区间 假设X所在的区间为[s,t],现在在S中插入X

文档评论(0)

1亿VIP精品文档

相关文档