在乙個長度為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 #include2const
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個花圃的狀...