今天準備依次把基礎的算法整理下,雖然有的不算特別基礎沥曹,不過在算法中都還算是基礎的虽画。計劃把這些算法都整理下然后構建出自己的一個大體框架箱吕,至少以后遇見簡單的算法裸題能夠知道一個思考方向,不至于摸不著頭腦舟茶。今天先把離散化整理下谭期。
離散化
離散化就是將一堆離散分布的數(shù)據(jù)排列在一起堵第,使其能夠存儲在數(shù)組中。
舉個栗子吧隧出,大致就是有一堆數(shù)據(jù)在-1e9—1e9
直接踏志,給其中某一些數(shù)加一個值,然后求一段區(qū)間和胀瞪,這時是不能用前綴和做的针余,因為數(shù)組存不下,這時就可以只考慮用到的數(shù)圆雁,中間沒用到的就忽略掉帆谍。
代碼實現(xiàn)方式就是先把輸入數(shù)據(jù)存下來,存儲所有會用到的數(shù)據(jù)烈涮,然后排序窖剑,這時就將這一大數(shù)與一堆小的數(shù)對應起來了(就是對應的數(shù)組下標)苛吱,想用某一個大數(shù)就二分查找這個數(shù)組,找到對應的那個小的數(shù)绘雁。
sort(alls.begin(), alls.end());
alls.erase(unique(alls.begin(), alls.end()), alls.end());
用的時候就二分查找alls
的值即可庐舟。