其实,本蒟蒻自学的时候,对于离散化就没有怎么学习过,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