離散化系列 離散化 字首和 差分

2021-10-05 18:18:40 字數 1401 閱讀 9728

區間和

acwing 802.區間和

這道題所展現的情況就是,資料並不是很多,利用到的元素值也不大,但關鍵就是下標太大,無法正常的以陣列下標來進行操作。因此,離散化,在這裡就是很合適了,把大的下標對映為小的下標後再進行處理。

對於這道題的解題步驟具體可分為一下幾步:

1.儲存,,,就是將所用用到的下標存起來;

2.排序加去重,,,為離散化做好前期準備;

3.二分查詢對映後的下標;

4.執行在某個位置加數的操作,用離散化後的下標代替那個想要對其操作的位置

5.求字首和

6.根據字首和陣列得到答案。

具體解釋就這麼多啦

上**:

#include

#include

#include

using

namespace std;

typedef pair<

int,

int> pii;

const

int n=

300010

;int a[n]

,s[n]

;vector<

int> alls;

vector add;

vector query;

intfind

(int x)

return r+1;

}int

main()

);//區間中某位置上加c的操作

alls.

push_back

(x);

//將所有涉及到x軸上的點存入alls中

}for

(int i=

1;i<=m;i++))

;//將所有涉及到x軸上的點存入alls中

alls.

push_back

(l);

alls.

push_back

(r);

}//排序加去重

sort

(alls.

begin()

,alls.

end())

; alls.

erase

(unique

(alls.

begin()

,alls.

end())

,alls.

end())

;for

(auto item: add)

for(

int i=

1;i <= alls.

size()

;i++

)for

(auto item: query)

return0;

}

還有一篇,待續,白天再來補上。。。

字首和 離散化

現在正在上課,但我還是要同步更新博文。滑稽 先講乙個離散化,就是把幾個離的特別遠的數在不影響結果的情況下,變成相近的數。倒是沒什麼影響,但應用在陣列下標的話可以節約空間。貌似和hash有點像 直接拍 給定n個數,如果乙個數出現x次,則對答案的貢獻為x 2 求這n個數對答案的貢獻是多少。n 10000...

B Light bulbs 離散化 差分

b.light bulbs 離散化 差分 題意 n個燈剛開始是關的,m次操作對 l,r 內的全部的燈反轉。問最後有幾個燈亮著。思路 剛開始差分直接便利了所有點,t了。所有只需要考慮哪些有貢獻的2 m個點就行了,對於區間中哪些0的部分,就不需要遍歷了。對於重複的點也不用管。include using ...

數列(字首和,離散化)

p1667 數列 給定乙個長度是n的數列a,我們稱乙個數列是完美的,當且僅當對於其任意連續子串行的和都是正的。現在你有乙個操作可以改變量列,選擇乙個區間 x,y 滿足ax ax 1 ay 0,1輸入格式 第一行乙個數n,以下n個數。資料規模 對於20 的資料,滿足1 n 5 對於100 的資料,滿足...