常用技巧 離散化

2021-10-01 20:43:03 字數 479 閱讀 7644

這個技巧比較常用,當處理資料比較大,但是又不是很需要去關心資料的具體數值,而只需要去關心相對位置時會很有用(因為很多題目的資料範圍會很大,但給的資料點卻很少,或者這個資料範圍是連續的時候)

比如 -2000000 200 600 -4000 600 2000000這種輸入,要對其進行離散化,先對其進行排序,然後用unique進行去重,之後所對應的序號便是離散化後的資料。

#include #include #include #include using namespace std;

vectorid;

const int maxn = 10;

int main()

sort(t + 1, t + n + 1);//排序

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

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

}

常用技巧 離散化

離散化,就是把無限空間中有限的個體對映到有限的空間中去,以提高演算法的時空效率。很多演算法的複雜度與資料中的最大值有關,比如樹狀陣列和純用陣列實現的一對一標記。時常會遇到這種情況 資料的範圍非常大或者其中含有負數,但資料本身的個數並不是很多 遠小於資料範圍 在這種情況下,如果每個資料元素的具體值並不...

技巧 離散化

模板 include include include using namespace std vectorid int main sort id.begin id.end 為二分搜尋排序 去重讓每乙個值都是單一的 id.erase unique id.begin id.end id.end 把值改變...

技巧 離散化

離散化作為一種常見的技巧,可以有效地降低時間和空間複雜度.本文介紹兩種離散化模板.此外,離散化有一些坑點,在處理染色問題的端點方面不能直接套用模板.這種題應該具體分析.include include using namespace std const int n 1e1 5 int t n a n ...