关于离散化
  • 板块P1908 逆序对
  • 楼主senak
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/4/29 09:43
  • 上次更新2024/4/29 14:11:23
查看原帖
关于离散化
1201076
senak楼主2024/4/29 09:43

数据

6

5 3 4 2 1 5

输出:9

离散化1:

struct point{
    int num,val;
}a[500010];
bool cmp(point q,point w){
    if(q.val==w.val)
        return q.num<w.num;
    return q.val<w.val;
}
 scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i].val),a[i].num=i;
    sort(a+1,a+1+n,cmp);
    for(int i=1;i<=n;i++)
        ranks[a[i].num]=i;

离散化1结果:5 3 4 2 1 6

离散化2:

  cin >> n; int ans = 0;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        b[i] = a[i];
    }
    sort(b + 1, b + n + 1);
    for (int i = 1; i <= n; i++) {
        a[i] = lower_bound(b + 1, b + n + 1, a[i]) - b;
    }

离散化2结果:5 3 4 2 1 5

两种种离散化得到的结果均不相同 但是都可以通过 相同的操作得到答案,还请大佬帮帮忙,十分感谢

2024/4/29 09:43
加载中...