关于离散化
来源:互联网 发布:手机视频格式转换软件 编辑:程序博客网 时间:2024/03/29 16:59
原文链接:点击打开链接
有些数据本身很大, 自身无法作为数组的下标保存对应的属性。
如果这时只是需要这堆数据的相对属性, 那么可以对其进行离散化处理!
离散化:当数据只与它们之间的相对大小有关,而与具体是多少无关时,可以进行离散化。
例如
9 1 0 5 4 与 5 2 1 4 3 的逆序对个数相同。
设有4个数:
1234567、123456789、12345678、123456
排序:123456<1234567<12345678<123456789
=> 1 < 2 < 3 < 4
那么这4个数可以表示成:2、4、3、1
使用STL算法离散化:
思路:先排序,再删除重复元素,然后就是索引元素离散化后对应的值。
假定待离散化的序列为a[n],b[n]是序列a[n]的一个副本,则对应以上三步为:
sort(sub_a,sub_a+n); // 排序int size=unique(sub_a,sub_a+n)-sub_a; // unique 函数去重 //size为离散化后元素个数for(i=0;i<n;i++)a[i]=lower_bound(sub_a,sub_a+size,a[i])-sub_a + 1;//k为b[i]经离散化后对应的值
对于第3步,若离散化后序列为0, 1, 2, ..., size - 1则用lower_bound,从1, 2, 3, ..., size则用upper_bound,其中lower_bound返回第1个不小于b[i]的值的指针,而upper_bound返回第1个大于b[i]的值的指针,当然在这个题中也可以用lower_bound然后再加1得到与upper_bound相同结果,两者都是针对以排好序列。使用STL离散化大大减少了代码量且结构相当清晰。
0 0
- 关于离散化......
- 关于离散化
- 离散化
- 离散化
- 离散化
- 离散化
- 离散化
- 离散化
- 离散化
- 离散化
- 离散化
- 离散化
- 离散化
- 离散化
- 离散化
- 离散化
- 矩形离散化
- 什么是离散化?
- 代码重构和优化一
- bitnami gitlab修改密码
- POJ 1775 FZU 1106 LightOJ 1189 Sum of Factorials
- Heritrix配置及扩展
- mongodb开启认证功能,并且添加管理员
- 关于离散化
- 深入理解c指针-内存管理
- 初次运行mapreduce作业报空指针异常
- Javascript中apply、call、bind
- 网络请求解析json的方式HttpClient
- javaweb后台程序如何查找bug
- 遍历所有文件
- 论界面设计与用户需求
- oracle执行计划