洛谷5026 Lycanthropy 差分套差分

2022-02-03 07:34:40 字數 1593 閱讀 1493

在乙個長度為m的序列中,每次給乙個下標x,和乙個權值v,然後從x-v*3到x-v*2單調遞增,從x-v*2到x單調遞減,從x到x+v*2再次遞增,然後x+v*2到x+v*3遞減,遞增遞減都是斜率絕對值為1的直線。

剛學了差分趁現在還沒忘趕緊把自己想的寫下來

看到這個其實很容易想到,對於每次修改,將其分為四個區間進行修改,由於它是單調遞增的,所以讓每個點對應的差分陣列加一就行,這樣就用到了線段樹維護差分陣列,但這樣還是效率不是很高,我們仍然可以優化,對於同一區間內的每個點與前乙個點的差值也是一定的,所以只要修改區間的兩端就可以使整個區間內的差值改變,這樣兩個點的差值就可以構成乙個差分陣列,然後通過對這個差分陣列求字首和,可以得到每個點與前乙個點的差值,再然後更新每個點值的字首和陣列,然後就可以得到這個點的值,輸出就行,也就是rt,差分套差分。

其實這個挺簡單的,仔細想想也  很容易    困難想得出來

最後是關於負數的問題,陣列下標是不能為負數的,會re,某大佬的做法是將原點左移,我試了試也是可以的,後來在洛谷上學習了一篇題解的做法,覺得這個很不錯,直接用乙個指標來代替陣列,其實陣列的實質也是指標,比如陣列aa[10]->從指標aa開始往後數10個,所以只要讓乙個指標指向陣列中間就能實現負下標的陣列,感覺挺實用 好玩。

1 #include2

const

int n=2e6;//

記得開大點,不然會被一些極大的資料re掉

3int aa[n<<1],bb[n<<1];4

intmain()

17for(int i=-40000;i<=40000+m;i++)

18 a[i]+=a[i-1],b[i]+=b[i-1]+a[i];

19for(int i=1;i<=m;i++)

20 printf("

%d "

,b[i]);

21return0;

22 }

v,當體積為 v

v 的乙個朋友跳入水中,我們設入水點為 i

i,將會導致 i - v + 1i−

v+1 到 i

i 的水位依次降低 1,2,\cdots,v1,

2,⋯,

vi到 i + v - 1i+

v−1 的水位會依次降低 v,v - 1,\cdots,1v,

v−1,

⋯,1.

i−v 的水位不變, i - v - 1i−

v−1 到 i - 2 * vi−

2∗v 水位依次增加 1,2,\cdots,v1,

2,⋯,

v, i - 2 * vi−

2∗v 到 i - 3 * v + 1i−

3∗v+

1 水位依次增加 v,v - 1,\cdots,1v,

v−1,

⋯,1i

+v水位不變,i + v + 1i+

v+1 到 i + 2 * vi+

2∗v 水位增加 1,2,\cdots,v1,

2,⋯,

v,i + 2 * vi+

2∗v 到 i + 3 * v - 1i+

3∗v−

1 水位依次增加 v,v - 1,\cdots,1v,

v−1,⋯,1

洛谷 桌球

國際乒聯現在主席沙拉拉自從上任以來就立志於推行一系列改革,以推動桌球運動在全球的普及。其中111111分制改革引起了很大的爭議,有一部分球員因為無法適應新規則只能選擇退役。華華就是其中一位,他退役之後走上了桌球研究工作,意圖弄明白111111分制和212121分制對選手的不同影響。在開展他的研究之前...

洛谷 保齡球

dl 算緣分算得很煩悶,所以常常到體育館去打保齡球解悶。因為他保齡球已經打了幾十年了,所以技術上不成問題,於是他就想玩點新花招。dl 的視力真的很不錯,竟然能夠數清楚在他前方十公尺左右每個位置的瓶子的數量。他突然發現這是乙個炫耀自己好視力的藉口 他看清遠方瓶子的個數後從某個位置發球,這樣就能打倒一定...

洛谷 1357 花園

的運算優先順序低於 貌似對矩陣理解更深刻了!2 m 5,相鄰的m個花圃可能有2 m種狀態 用0 2 m 1來表示 要求有不超過k個c形花圃,對應其二進位制形式中的0不超過k個。標記出0 2 m 1中滿足條件的狀態x,對於每個狀態x,前m個花圃會出現1次 f i,x 表示前i個花圃中,最後m個花圃的狀...