数据离散化之后 得到的数组有什么直观含义? 洛谷P1966

博文链接:如果还没有了解过离散化戳这里

问题链接:P1966 火柴排队

题目给出了INT_MAX级别的数组。这不仅对面子内存是一个挑战,最主要的是分散的数组不利于我们进行连续操作。
在这里插入图片描述
但是离散化究竟有什么直观的含义呢?好像很多人都同我一样觉得这个很难理解。
比如这样一位同学:(我太懂了!!)
在这里插入图片描述

直入主体

数组准备

比如思考这样一个乱序的大幅度序列b,构建它的辅助数组a,用来表明序号变化,同时减小数组元素的变化幅度。

a: [1] [2] [3] [4]    ------------>   
b:  2   3   1   4     ------------>    

在这个辅助关系当中,我们发现元素2和序号[1]绑定,元素3和序号[2]绑定,元素1和序号[3]绑定,元素4和序号[4]绑定。

过程描述

经过对元素的排序,我们对应着发现,最小的1对应的[3]挪到前面,最大的4仍然在数组的最末尾。

a: [1] [2] [3] [4]    ------------>  c: [3] [1] [2] [4]
b:  2   3   1   4     ------------>  d:  1   2   3   4 

所以整个过程当中就有四个有效数组

离散化函数的映射描述

在离散化过程当中,一旦变得有序,就丧失了信息量。

所以,考虑的核心I/O是数组b和c。

b是定义空间(映射输入),是离散化之前的数组。幅度大,不连续。
解空间(映射输出)c,即是离散化后所得的数组。通过连续序号变序而来,幅度小,填满较小的自然数空间。

离散化函数的直观描述

如果将离散化定义成一个函数 f ( n ) f(n) ,那么它的目的就是寻找原数列中第n小的元素处于哪一位,答案是第f(n)位

总体的作用压缩只考虑大小关系的定义空间

后记

也不知道有没有解释清楚或者有没有帮助。有疑问可以提出来啊……
诚求指教。

猜你喜欢

转载自blog.csdn.net/weixin_45502929/article/details/106343925