【校内模拟】互异

这道题暴力分比较高

将m从1开始枚举,对m取模后判断有多少个重复得数,若<=k,就输出m

然而看了题解以后,简直是MMP 我学到了很多

枚举还\(^{TM}\)能剪枝!

两个数模m后不相等,等价于两个数的差不是m的倍数。所以我们先计算出n个数的两两之差,

用线性筛质数做一个粗略的预处理,得到 b 数组,b[i]表示这 n*(n-1)/2 个差中至少有b[i]个含有因子i(因为是粗略估计,所以用了“至少”)。

然后我们从小到大枚举m,在枚举时首先判断b[m]是否大于k*(k+1)/2,如果是,则去掉k个数依然不满足条件,那么将m加一

否则暴力判断

posted @ 2018-11-05 17:12  yjk  阅读(229)  评论(0编辑  收藏  举报