資料離散化,就是當我們隻在乎題目所給的資料之間的大小關系,而忽略每一個資料的大小屬性時,将資料離散化為較小較為容易處理的資料,而不影響最後結果。
舉個例子,題目給出一組資料5,4,4,2,8,你隻關心他們之間的大小關系,此時就可以将資料離散化為3,2,2,1,4,你會發現每個資料之間的大小關系并沒有變化,而資料大小範圍縮小了很多。
struct node{
int x;
int pos;
}a[N];
for(int i = 1; i <= n; i++){
scanf("%d", &a[i].x);
a[i].pos = i;
}
sort(a+1, a+1+n, cmp);
for(int i = 1; i <= n; i++){
if(i > 1 && a[i].x == a[i-1].x){
b[a[i].pos] = b[a[i-1].pos];
continue;
}
b[a[i].pos] = i;
}