個人筆記,僅供複習
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個例項放入箱子中如果後面例項放入箱子時,比對當前例項...