離散化作為一種常見的技巧,可以有效地降低時間和空間複雜度.本文介紹兩種離散化模板.此外,離散化有一些坑點,在處理染色問題的端點方面不能直接套用模板.這種題應該具體分析.
#include #include using namespace std;
const int n = 1e1+5;
int t[n],a[n];
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++)
return 0;
}
#include #include using namespace std;
const int n = 1e5+5;
struct node
};int n;
int t[n];
node a[n];
int main()
sort(a+1,a+n+1);
for(int i = 1; i <= n; i++)
return 0;
}
技巧 離散化
模板 include include include using namespace std vectorid int main sort id.begin id.end 為二分搜尋排序 去重讓每乙個值都是單一的 id.erase unique id.begin id.end id.end 把值改變...
常用技巧 離散化
這個技巧比較常用,當處理資料比較大,但是又不是很需要去關心資料的具體數值,而只需要去關心相對位置時會很有用 因為很多題目的資料範圍會很大,但給的資料點卻很少,或者這個資料範圍是連續的時候 比如 2000000 200 600 4000 600 2000000這種輸入,要對其進行離散化,先對其進行排序...
常用技巧 離散化
離散化,就是把無限空間中有限的個體對映到有限的空間中去,以提高演算法的時空效率。很多演算法的複雜度與資料中的最大值有關,比如樹狀陣列和純用陣列實現的一對一標記。時常會遇到這種情況 資料的範圍非常大或者其中含有負數,但資料本身的個數並不是很多 遠小於資料範圍 在這種情況下,如果每個資料元素的具體值並不...