總結有如下幾個步驟:
1.拷貝原陣列
2.將拷貝的陣列排序
3.利用unique()對拷貝陣列去重,並記錄不重複元素
4.利用lower_bound()離散化
注:唯一需要注意的是下標究竟從幾開始
離散化後的值可以理解為是在這個陣列中第幾大的值,所以如果要查詢離散化的值在原陣列中對應哪個數,我們直接查詢 t[這個值]就行了。
#include
using
namespace
std;
const
int maxn = 10005;
int a[maxn], t[maxn];
int n;
int main()
sort(t + 1, t + 1 + n);//將t陣列排序
int m = unique(t + 1, t + 1 + n) - t - 1;//去重,m是a陣列不重複元素個數
for(int i = 1; i <= n; i++)
for(int i=1;i<=n;i++)
return
0;}
離散化的方法
離散化,就是把一些很離散的點給重新分配。舉個例子,如果乙個座標軸很長 1e10 給你1e4個座標,詢問某乙個點,座標比它小的點有多少。很容易就知道,對於1e4個點,我們不必把他們在座標軸上的位置都表示出來,因為我們比較有多少比它小的話,只需要知道他們之間的相對大小就可以,而不是絕對大小,這,就需要離...
離散化方法
個人筆記,僅供複習 2.適用範圍 除了對於較大整數需要使用離散化之外,對於一些需要使用整型資料結構,但給出的資料卻是小數的也可以使用離散化,將其索引為整數就可以了。3.一般步奏 4.例題 uva12171 uva12171 sculpture rujia liu include include in...
常用特徵離散化方法
1規定劃分區間的引數,取定長的間隔將特徵放入不同的箱子中,這種方法對異常點比較敏感。2 根據頻率劃分箱子,會出現特徵相同卻不在乙個箱子中的情況,需要在劃分完成後進行微調。先對特徵值進行sort,然後評估分割點,劃分或者合併 3 1r方法 將前面的m個例項放入箱子中如果後面例項放入箱子時,比對當前例項...