关于离散化的一点思考

  其实,本蒟蒻自学的时候,对于离散化就没有怎么学习过,qaq,当初那道题估计是数据太水了让我水过去了的吧?

  好,言归正传,离散化是什么呢?

  在我看来,离散化就是对数据的一种处理,把数据范围很大的数处理(当然,前提是数据没那么多),每个数组元素里存储一个大数,然后直接对数组进行处理。

  

  推荐查看(侵权请谅解)(https://www.cnblogs.com/hkttg/p/8445019.html)

  先介绍常规的方法(不用unique)

  

for (int i = 0 ; i < n ; i ++) {
    scanf("%d%d",&li[i] , &ri[i]);
    X[nn++] = li[i];
    X[nn++] = ri[i];                //读入时就要存入X数组,以备离散化操作
}
sort(X , X + nn);                      //排序,必不可少
int m = 1;
for (int i = 1 ; i < nn; i ++) {
    if (X[i] != X[i-1]) X[m ++] = X[i];       //铲除重复元素
}
for (int i = m - 1 ; i > 0 ; i --) {
    if (X[i] != X[i-1] + 1) X[m ++] = X[i-1] + 1;         //在相聚较大的两个元素之间,插入数,可以提高对付某些坑爹数据
}
sort(X , X + m);                //最后再排序一次,以便下面的work()操作

  而用unique的方法,就看那位大佬的博客了吧!@#¥@%¥&%*

  如果还有思考再补充………………

Q  A  Q

猜你喜欢

转载自www.cnblogs.com/polar0bear/p/8963253.html