ch0 簡單實用演算法篇 離散化

2021-10-23 13:45:50 字數 1302 閱讀 8190

1.自然語言描述

離散化有三個主要步驟:

排序:將無限集合中有限物件集中並排序。

去重:去除集中後重複出現的物件。

二分查詢:對於每個要進行處理的物件,找出在序列中的位置。

2.**描述

#include

#include

#include

#include

#include

using

namespace std;

const

int maxn=

3e5+10;

typedef pair<

int,

int> pii;

vector add,query;

vector<

int> alls;

//記錄所有實際涉及到的點(物件),以此初步實現將無限空間壓縮為有限空間

int a[maxn]

,s[maxn]

;int n,m,x,c,l,r;

intfind

(int x)

return l;

}int

main

(void))

; alls.

push_back

(x);

}for

(int i=

0;i; alls.

push_back

(l);

alls.

push_back

(r);

}sort

(alls.

begin()

,alls.

end())

;//排序

alls.

erase

(unique

(alls.

begin()

,alls.

end())

,alls.

end())

;//去重

for(

auto it:add)

for(

int i=

0;isize()

;i++

) s[i]

=s[i-1]

+a[i]

;for

(auto it:query)

return0;

}//離散化:將無限空間的有限點(物件)對映到有限空間中去.形象一點就是,將無限空間中稀疏的一系列點進行有限稠密化處理.

ch0 簡單實用演算法篇 雙指標演算法

1.自然語言描述 雙指標演算法並不是一種有確定模式的演算法,而是一種思想 辦法,它可以滲透進其他的具體演算法中,而且往往起到了重要作用。一般情況下,雙指標演算法往往出現在對乙個或兩個序列的處理中 比如歸併排序中,回歸過程中兩個子串行的合併就用到了雙指標 2.描述 include include in...

簡單實用演算法 氣泡排序

變數定義 注 氣泡排序如果能在內部迴圈第一次執行時,使用乙個bool值來表示有無需要交換的可能,也有可能把最好的複雜度降低到o n 在這個情況,在已經排序好的數列就無交換的需要。演算法 c 氣泡排序 public void bubblesort intnums if exchange 本趟排序未發生...

簡單實用演算法 氣泡排序

變數定義 注 氣泡排序如果能在內部迴圈第一次執行時,使用乙個bool值來表示有無需要交換的可能,也有可能把最好的複雜度降低到o n 在這個情況,在已經排序好的數列就無交換的需要。演算法 c 氣泡排序 public void bubblesort intnums if exchange 本趟排序未發生...