(手寫)可去重離散化序列

2021-09-24 03:59:40 字數 569 閱讀 1274

所謂離散化,就是求乙個序列每個數是序列中的第幾大/小的,可以為主席樹等權值線段樹等節省空間(比如數的最大值為1e9,你就要存1e9那麼大,但離散化後只用存數的個數那麼多)

真心看不懂哪些大佬們如何用stl寫離散化

我手寫了乙個,保證:如果同樣大的名次相同,從小到大

型別1:運動員是排序(自己口胡的名字)

*即設有k個比他大,他就是k+1名

比如:1、3、5、5、7排序後名次依次為1、2 、3 、3、5,注意7排名是5不是4

**://將a序列離散化後存入b序列,同樣大的同名次

#includeusing namespace std;

#define n 100005

struct nodeyuan[n];

int n,b[n];

bool cmp(const node x,const node y)yuan[n];

int n,b[n];

bool cmp(const node x,const node y){

return x.a完結散花qwq

序列的 離散化

問題描述 對於乙個資料元素很大的序列 a 1 a 2 a n 我們在處理這個序列時,往往只會關心序列中元素的大小關係。這時候為了處理方便,可把序列對映為1.n範圍內的數,其中最小的元素對映為 第 小的數對映為2,例如 原 序 列 19827345 2000000053 73925 98203456 ...

離散化 去重 二分查詢

離散化是程式設計中乙個常用的技巧,它可以有效的降低時間複雜度。其基本思想就是在眾多可能的情況中,只考慮需要用的值。離散化可以改進乙個低效的演算法,甚至實現根本不可能實現的演算法。要掌握這個思想,必須從大量的題目中理解此方法的特點。例如,在建造線段樹空間不夠的情況下,可以考慮離散化。1 排序 2 去重...

nyoj 133 子串行 尺取法 離散化

時間限制 3000 ms 記憶體限制 65535 kb 難度 5 描述 給定乙個序列,請你求出該序列的乙個連續的子串行,使原串中出現的所有元素皆在該子串行中出現過至少1次。如2 8 8 8 1 1,所求子串就是2 8 8 8 1。輸入 第一行輸入乙個整數t 0 輸出對於每組輸入,輸出包含該序列中所有...