離散化方法

2021-08-20 17:43:10 字數 1399 閱讀 7962

個人筆記,僅供複習

2.適用範圍:除了對於較大整數需要使用離散化之外,對於一些需要使用整型資料結構,但給出的資料卻是小數的也可以使用離散化,將其索引為整數就可以了。

3.一般步奏:

4.例題:uva12171

// uva12171 sculpture

// rujia liu

#include#include#include#includeusing namespace std;

const int maxn = 50 + 5;

const int maxc = 1000 + 1;

// original data

int n, x0[maxn], y0[maxn], z0[maxn], x1[maxn], y1[maxn], z1[maxn];

// discretization related

int nx, ny, nz;

int xs[maxn*2], ys[maxn*2], zs[maxn*2];

// floodfill related

const int dx = ;

const int dy = ;

const int dz = ;

int color[maxn*2][maxn*2][maxn*2];

struct cell

bool valid() const

bool solid() const

bool getvis() const

void setvis() const

cell neighbor(int dir) const

int volume() const

int area(int dir) const

};void discretize(int* x, int& n)

int id(int* x, int n, int x0)

void floodfill(int& v, int& s)

}} v = maxc*maxc*maxc - v;

}int main()

discretize(xs, nx);

discretize(ys, ny);

discretize(zs, nz);

// paint

memset(color, 0, sizeof(color));

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

int v, s;

floodfill(v, s);

printf("%d %d\n", s, v);

} return 0;

}

離散化的方法

總結有如下幾個步驟 1.拷貝原陣列 2.將拷貝的陣列排序 3.利用unique 對拷貝陣列去重,並記錄不重複元素 4.利用lower bound 離散化 注 唯一需要注意的是下標究竟從幾開始 離散化後的值可以理解為是在這個陣列中第幾大的值,所以如果要查詢離散化的值在原陣列中對應哪個數,我們直接查詢 ...

離散化的方法

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

常用特徵離散化方法

1規定劃分區間的引數,取定長的間隔將特徵放入不同的箱子中,這種方法對異常點比較敏感。2 根據頻率劃分箱子,會出現特徵相同卻不在乙個箱子中的情況,需要在劃分完成後進行微調。先對特徵值進行sort,然後評估分割點,劃分或者合併 3 1r方法 將前面的m個例項放入箱子中如果後面例項放入箱子時,比對當前例項...