数据离散化
来源:互联网 发布:淘宝联盟怎么推广赚钱 编辑:程序博客网 时间:2024/06/05 20:30
很无聊 今天都没干什么
来写个离散化 加强印象
for(int i=0;i<n;i++){ scanf("%d",&in[i]); temp[i]=in[i];} sort(in,in+n,cmp); coun=unique(in,in+n)-in; for(int i=0;i<n;i++) a[i]=lower_bound(in,in+coun,temp[i])-in + 1;
代码不多 思想也很简单
主要是unique这个函数 去重 是离散化很重要的一步 有些离散化的代码没有去重 我认为是错的
比如 100 200 300 400 400 50000这组数据
没有去重的话离散出来就是 1 2 3 4 5 6
很明显 这是错的 正确的结果应该是1 2 3 4 4 5
好像我在一本正经的胡说八道啊……好夸张!
所以去重很重要 这个离散化复杂度 nlgn 好像挺高的
如果你觉得我以上我说的都是对的,那你就错了
好欠打啊
有些离散化的代码没有去重 我认为是错的
这句话 你们没发现错误吗?
事实上 有些代码是不需要去重的 就比如我上面的代码
for(int i=0; i<n; i++) { scanf("%d",&in[i]); temp[i]=in[i]; } sort(in,in+n); for(int i=0; i<n; i++) a[i]=lower_bound(in,in+n,temp[i])-in + 1;
这个代码也是对的 为什么???
因为这个二分查找的函数!
lower_bound这个函数会返回比所求数大的最小的位置 也就决定了
即使你的数据是 100 200 300 4000 300
排序后100 200 300 300 4000
但是lower_bound这个二分查找出来的是 1 2 3 5 3 (离散化结果)、
这个结果是没有错的 只是没有4而已
所以 大家再看别人博客的时候 不要一味盲目相信 也要自己思考!!
很重要的!!尤其像我这样水平低的!!!
嘻嘻!!!!
敬上!!
0 0
- 数据的离散化
- 数据的离散化
- 数据的离散化
- 数据的离散化
- 数据离散化杂谈
- 数据离散化
- 数据离散化
- 数据的离散化
- 数据离散化
- 数据的离散化
- 数据的离散化
- 数据离散化
- 数据离散化
- 【学习】数据离散化
- 数据离散化
- 数据离散化
- 数据的离散化
- 浅谈数据离散化
- IDEA ant连接ftp报错NoClassDefFoundError
- Light OJ 1421 Wavio Sequence (简单DP)
- MFC基础,MFC自绘控件学习总结.
- 【POJ】[2387]Til the Cows Come Home
- VM12即VMware Workstation 12 序列号
- 数据离散化
- 关于C语言include尖括号和双引号的对话
- 栈
- 1.1.3:可视化的累加器
- java高性能 tcp协议代码示例(一)
- android 音乐播放bug
- ACM_普通DP
- HDU 5172 GTY's gay friends
- 三思而行 --jsp基础篇