演算法筆記 初識離散化

2021-09-14 05:03:22 字數 519 閱讀 8423

對於一些數值很大但數量不大的數,我們更關心它們的相對大小,更想要知道這個數是第幾大或者第幾小,這個時候就需要把這些數離散化。

感謝大佬:

#include #include #include #define maxn 1005

using namespace std;

int main()

sort(t+1,t+1+n);

int m=unique(t+1,t+1+n)-(t+1);

for(int i=1;i<=n;i++)

//可以用b陣列存初始的a陣列

/*memcpy(b,a,sizeof(a));

for(int i=1;i<=n;i++)

cout

for(int i=1;i<=n;i++)

return 0;

}

演算法筆記 離散化

離散化,就是把一些很離散的點給重新分配。舉個例子,如果乙個座標軸很長 1e10 給你1e4個座標,詢問某乙個點,座標比它小的點有多少。很容易就知道,對於1e4個點,我們不必把他們在座標軸上的位置都表示出來,因為我們比較有多少比它小的話,只需要知道他們之間的相對大小就可以,而不是絕對大小,這,就需要離...

離散化1(演算法)

對於值域比較大 0 10 9 對於這些值,我們需要把他們當成下標來做,我們可以把它對映到從1開始連續的陣列之中儲存 假設 a a有序 對映之後 1 0 3 1 100 2 2000 3 5000000 4 問題 a中可能存在重複元素 所以需要去重 vector int a 儲存所有待離散化的值 so...

基礎演算法 離散化

離散化主要是通過建立乙個對映,將分散的元素的位置對映成連續的位置以節約空間。說明 x為題目要進行操作的陣列元素的下標,y為經過離散化後的下標。原理 若不離散化,則針對該例需要開乙個大小為9000000的陣列儲存操作結果!通過建立乙個對映陣列來儲存所有要進行操作的下標x,然後將其排序去重,每次操作x位...