Codeforces Round #350 (Div. 2)(670C)
今天对着算法进阶指南,学了一下离散化。大概对桶排这样的算法优化比较好吧。
离散化:就是把无穷大的集合中若干个元素映射为有限集合以便于统计的方法。例如在很多时候,问题范围定义为整数集合Z,但涉及的元素只有m个。(桶排优化)
此时,我们就可以把这些整数与(1-m)建立起映射关系,再去掉重复的元素。
先排序,再删去相同的元素(也可以用unique函数)
void discrete() { int m=0; sort(a+1,a+n+1); for(int i=1;i<=n;i++)if(i==1||a[i]!=a[i-1]) b[++m]=a[i]; }
int query(int x) { return lower_bound(b+1,b+m+1,x)-b; }