洛谷P3948 資料結構 題解

2022-04-12 02:02:25 字數 1630 閱讀 8169

題目傳送

感覺這道題秀了我一地的智商。。。

審題沒審好,沒確定帶修改的操作中詢問的次數<=1000,且max和min都是事先給好、不變的。想了半天線段樹、分塊,卻忘了最基礎的暴力。

寫不出題時先寫暴力。

離線部分:

顯然不能暴力處理詢問了,但是沒有修改,又是區間詢問個數,自然要想到字首和優化了。設sum[i]為前i位滿足條件的個數,掃一遍就能處理出sum,這是就能o(1)做詢問了。

**:

1 #include2 #include3

4using

namespace

std;56

const

int n=80005;7

8int

n,opt,minn,maxx,fin,x;

9int

x,sum[n];

1011

long

long

d[n],now,t,mod;

1213

char

ch;14

15bool

f;16

17 inline int

read()

1826

27 inline char

mygetchar()

2834

35void print(int

a)36

4142

intmain()

4357

else

5871

print(ans);

72 putchar('\n'

);73}74

}75 fin=read();

76 now=0;77

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

7883

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

8489

return0;

90 }

總結:寫不出題想想暴力(沒準就是正解呢)

差分多用於優化離線的區間修改。

字首和多用於離線的區間查詢。

洛谷P3948 資料結構 題解(差分)

最開始的陣列每個元素都是0 給出n,opt min,max,mod 在int範圍內 a l r x 表示把 l,r 這個區間加上x 陣列的從l到r的每個元素都加上x q l r 表示詢問 l,r 這個區間中元素t滿足 min t i mod max 的 t這樣的數的個數 i是陣列下標 元素的值 陣列...

洛谷 P3948 資料結構 (差分陣列)

直接差分陣列搞一搞就ok了。因為前面的查詢和修改摻雜在一起的詢問很少,所以對於那些詢問我們暴力去查詢就ok。在final詢問之前求乙個符合要求的字首和就可以o 1 輸出了。include using namespace std const int maxn 8e4 5 typedef long lo...

洛谷 P3948 資料結構 差分陣列

題目看起來很麻煩,其實就是區間修改和區間查詢,這裡我用的是差分陣列寫的,線段樹應該也可以寫吧,對於剛開始的opt次詢問,可以直接暴力求滿足條件的個數,然後在後面的final次詢問之前我們對差分陣列求乙個字首和,記錄一下所有滿足條件的個數的字首和,然後o 1 去輸出就好了。ac include def...