OSDN Git Service
(root)
/
oi-wiki
/
main.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
891553c
)
feat: upd 离散化
author
Ir1d
<sirius.caffrey@gmail.com>
Thu, 23 Aug 2018 08:39:42 +0000
(16:39 +0800)
committer
Ir1d
<sirius.caffrey@gmail.com>
Thu, 23 Aug 2018 08:39:42 +0000
(16:39 +0800)
docs/misc/discrete.md
patch
|
blob
|
history
diff --git
a/docs/misc/discrete.md
b/docs/misc/discrete.md
index
e69de29
..
9bc1c3b
100644
(file)
--- a/
docs/misc/discrete.md
+++ b/
docs/misc/discrete.md
@@
-0,0
+1,20
@@
+## 简介
+
+所谓离散化,一般是指数据范围很大,但是它的实际大小并不是很重要,我们只需要用到它们的相对大小关系。
+
+或者是有些数本身很大,自身无法作为数组的下标来方便地处理。
+
+用来离散化的可以是大整数、浮点数、字符串 …… 等等。
+
+离散化本质上也可以看成是 [哈希](/string/hash) 的过程。
+
+## 实现
+
+C++ 离散化有现成的 STL 算法:
+
+```c++
+// vector<int> a, b; b 是 a 的一个副本
+std::sort(a.begin(), a.end());
+V.erase(std::unique(a.begin(), a.end()), a.end());
+for (int i = 0; i < n; ++i) b[i] = std::lower_bound(a.begin(), a.end(), b[i]) - a.begin();
+```