摘要: 题意:给定一个N个不同的非负整数(每个数不大于10^6),1<=N<=5000,问找到一个最小的m使得N个数去掉最多x(0<=x<k)个数后能够使得N-x个数%m两两不同。解法:首先可以给定出一个暴力的方法,那就是枚举所有的m,从1开始,然后统计余数相同的数一共多出来多少个,很明显,当多出来的数大于k时则不满足情况,从小到大枚举m遇到第一个满足要求的返回即可。但是这样很显然会超时,时间复杂度为O(N*10^6),这里有一个优化如下:统计出所有的两两组合差值的情况,如有两个数x,y如果x % m = y %m,那么(x - y) % m = 0,统计差值将在后面的计算中发 阅读全文
posted @ 2013-05-14 09:57 沐阳 阅读(590) 评论(0) 推荐(0) 编辑