【OI之路】02数论算法-6离散化

版权声明:本文为博主原创文章,未经博主允许不得转载,欢迎前往zory.cf获得最佳体验 https://blog.csdn.net/Zory_Programmer/article/details/78146914

建议前往我的网站获得最佳体验。

理论上就是让数字间相对关系保持不变但数字变小,以缩小占用空间(开数组时)。

struct nod
{
    int x,p,z;//x原值,p原位置,z新值
}a[99],b[99];
int main()
{
    int n;cin>>n;
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i].x);
        a[i].p=i;
        b[i]=a[i];
    }
    sort2(1,n);b[1].z=1;
    for(int i=2;i<=n;i++) b[i].z=b[i-1].z+(b[i].x==b[i-1].x);
    for(int i=1;i<=n;i++) a[b[i].p].z=b[i].z;
    for(int i=1;i<=n;i++) printf("%d ",a[i].z);
}

猜你喜欢

转载自blog.csdn.net/Zory_Programmer/article/details/78146914
今日推荐