数据
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
两种种离散化得到的结果均不相同 但是都可以通过 相同的操作得到答案,还请大佬帮帮忙,十分感谢