資料得離散化是重要的演算法思想。(如果每個資料元素的具體值並不重要,重要的是他們之間的大小關係的話,我們可以先對這些資料進行離散化,使資料中的最大值盡可能小且保證所有資料都是正數)
當以權值為下標的時候,有時候值太大,存不下。 所以把要離散化的每乙個陣列裡面的數對映到另乙個值小一點的陣列裡面去。
打個比方,某個題目告訴你有10^4個數,每個數大小不超過10^10,要你對這些數進行操作,那麼肯定不能直接開10^10大小的陣列,但是10^4的範圍就完全沒問題。
例子:原資料:1,999,100000,15;處理後:1,3,4,2
三個離散化的關鍵函式:
sort()的作用:排序。
該離散化方法時間複雜度o(nlogn)
1、排序(sort)
2、去重(unique)
3、索引(lower_bound)
1 #include2 #include3 #include4using
namespace
std;
5int lsh[1000], lshcopy[1000], x[1000]; //
lsh[n]是所求的離散化的陣列
6int
main()716
//離散化的三大步驟
17 sort(x, x + n); //
第一步排序
18int size = unique(x, x + n) - x; //
第二步unique函式去重
19for (int i = 0; i < n; i++) //
第三步lower_bound函式索引
2024
return0;
25 }
記住,而且要熟練掌握(演算法比賽中常用的技巧!!!)
資料離散化
離散化有兩種方法 第一種,先看一段 const int n 1e5 7 int t n a n int main 在這段 中,a經過離散,範圍就變成了m。解釋一下,unique是c 自帶的乙個函式,表示對乙個數列去重,然後返回不重複的元素個數,當然在後面要減去首位址。那麼這種離散化對於有重複元素的數...
資料離散化
一 概述 資料離散化是乙個非常重要的思想。為什麼要離散化?當以權值為下標的時候,有時候值太大,存不下。所以把要離散化的每乙個陣列裡面的數對映到另乙個值小一點的陣列裡面去。打個比方,某個題目告訴你有10 4個數,每個數大小不超過10 10,要你對這些數進行操作,那麼肯定不能直接開10 10大小的陣列,...
資料離散化
今天執行 資料離散化 部分 時出錯,環境python3.6 pycharm,網上各種查詢資料後發現原 主要是三個地方需要修改 下面紅色部分,原有問題 被注釋掉了 修改並新增了部分注釋。coding utf 8 資料規範化 import pandas as pd datafile data discr...