离散化

Posted liuwenyao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了离散化相关的知识,希望对你有一定的参考价值。

离散化

离散化适用于数据的权值不重要,数据权值之间的相对位置及大小关系重要的一种优化方法。而离散化也有许多方法,其中各有好坏。

1.排序解法(可处理重复元素)

bool cmp(ha c, ha b)

    return c.num < b.num;

int main() 

    scanf("%lld", &n);
    for (int i = 1; i <= n; i++)
        scanf("%lld", &data[i]), a[i].id = i, a[i].num = data[i];
    sort(a + 1, a + 1 + n, cmp);
    for (int i = 1, j = 0; i <= n; i++)
       
        if (a[i].num != a[i - 1].num || i == 1) j++;
            data[a[i].id] = j;
       

2.STL解法(可处理重复元素)

scanf("%d", &n);
  for (int i = 1; i <= n; i++)
    scanf("%d", &a[i]), t[i] = a[i];
  sort(t + 1, t + n + 1);
  m = unique(t + 1, t + n + 1) - t - 1;
  for (int i = 1; i <= n; i++)
    a[i] = lower_bound(t + 1, t + m + 1, a[i]) - t;

以上是关于离散化的主要内容,如果未能解决你的问题,请参考以下文章

离散化的思想和它的两种代码与区别

数据离散化

AcWing 2014. 岛(离散化+差分)

Matlab的Simulink连续模型离散化代码自动生成C语言(简明教程)

基本算法——离散化

坐标离散化