簡單差分 保證你一看就懂

2021-08-28 12:49:29 字數 661 閱讀 5914

首先,給出乙個問題:

給出n個數,再給出q個詢問,每個詢問給出le,ri,x,要求你在le到ri上每乙個值都加上x,而只給你o(n)的時間範圍,怎麼辦?

思考一下:

還是用上面這個題目,假如要在le和ri上全都加乙個x,很顯然,這個o(n)是不可避免的,既然這樣,那我們考慮把o(n*q)變成o(n+q).也就是說,在詢問中我們不去for來加x,而是做乙個標記,最後一起加上。嗯,這裡暫時記住就好......

現在需要自己動筆模擬一下了!

先另外開乙個專門差分的陣列(大小=題中的序列長度)

假如在3~8的區間上加上5,那我們在差分陣列中的3位置上加上乙個5(原因暫時不懂沒關係,用筆先跟著模擬),再在8+1的位置上減乙個5,如此操作完q次。

假如我們只有這一次操作,開始統計答案,運用前置和的思想,cf[i](差分)=cf[i-1]+cf[i].那麼你會發現(如果你模擬了的話),在3~8的區間上,你已經使差分陣列全部加上了5(推廣到所有q一起統計答案依舊正確)

再用o(n)的for把他們加到原序列之中去,輸出!

看一下複雜度,果然:o(常數*n).

這個**應該不難,所以我也就不貼了(其實這算一種思想,沒有完全的板子)

簡單差分 保證你一看就懂

首先,給出乙個問題 給出n個數,再給出q個詢問,每個詢問給出le,ri,x,要求你在le到ri上每乙個值都加上x,而只給你o n 的時間範圍,怎麼辦?思考一下 還是用上面這個題目,假如要在le和ri上全都加乙個x,很顯然,這個o n 是不可避免的,既然這樣,那我們考慮把o n q 變成o n q 也...

一看就懂的SwitchHosts

switchhosts 是乙個管理 切換多個 hosts 方案的工具。它是乙個免費開源軟體。日常開發工作中,我們可能經常需要切換各種 hosts 繫結,比如在本地開發時可能需要乙個開發環境的 hosts 繫結方案,發布到測試環境後又有乙個測試環境的 hosts 繫結方案,然後可能還有乙個預發布環境,...

一看就懂TCP 連線

我們先來看乙個定義。這樣理解比較抽象。我們換個角度。它的本質還是傳輸控制。如果讓我們自己設計這個傳輸,我們會怎麼想呢。tcp 協議它會先建立連線。三次握手目的是保證雙方都有傳送和接收的能力 首要原因是為了防止舊的重複連線初始化造成混亂。同步雙方初始序列號客戶端和服務端都處於 closed 狀態。先是...