Luogu 4867 Gty的二逼妹子序列

2022-06-13 04:21:12 字數 1257 閱讀 3591

bzoj3809,是許可權題。

我永遠喜歡莫隊。

先莫隊一下移下左右指標,然後用乙個資料結構維護一下區間$[a, b]$中的顏色的值,跟著指標移動一起修改修改,每一次$query$的時候就相當於查詢一下$[a, b]$中的和。

其實可以直接對顏色進行分塊,維護一下塊內的值以及每乙個位置的答案,每一次修改是$o(1)$的,每一次查詢是$o(\sqrt)$的,因為總共要進行$m$次查詢,所以總的時間複雜度是$o((n + m)\sqrt)$,這樣寫可以比樹狀陣列以及其他的資料結構少乙個$log$。

然而這個$log$在你谷上跑的飛快……

最近真是頹了。

code:

#include #include 

#include

#include

using

namespace

std;

const

int n = 1e5 + 5

;const

int m = 1e6 + 5

;int

n, qn, a[n], blo, ans[n];

intcnt[n], bel[n], ln[n], rn[n];

struct

querys q[m];

bool cmp(const querys &x, const querys &y)

inline

void read(int &x)

inline

int query(int st, int

ed)

else

return

res;

}inline

void add(int

x) inline

void del(int

x) inline

void

solve()

}int

main()

if(rn[blo]

++blo, ln[blo] = rn[blo - 1] + 1, rn[blo] =n;

for(int i = 1; i <= blo; i++)

for(int i = 1; i <= qn; i++)

solve();

for(int i = 1; i <= qn; i++)

printf(

"%d\n

", q[i].ans);

return0;

}

view code

BZOJ3809 Gty的二逼妹子序列

空間這麼小 然後就莫隊了 不知道三維kd tree能不能過 本來想打bit,結果發現過不了的樣子,因為修改比較多,詢問比較少,所以可以考慮平衡複雜度,用分塊維護 單次修改o 1 詢問o n code include include include include include include in...

bzoj3809 Gty的二逼妹子序列

先說一種很顯然的做法,大體框架肯定是莫隊,然後每來一種顏色就處理下,如果是新出現的就在bit當中把這個位置 1,如果這種顏色消失了就在bit中對應位置 1。這樣的時間複雜度是o nn log 2n 我交了一次發現超時了。那怎麼辦?觀察下,我們查詢和修改的複雜度都是o logn 但是顯然查詢的次數要遠...

bzoj 3809 Gty的二逼妹子序列

autumn和bakser又在研究gty的妹子序列了!但他們遇到了乙個難題。對於一段妹子們,他們想讓你幫忙求出這之內美麗度 a,b 的妹子的美麗度的種類數。為了方便,我們規定妹子們的美麗度全都在 1,n 中。給定乙個長度為n 1 n 100000 的正整數序列s 1 si n 對於m 1 m 100...