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 本趟排序未發生...