筱瑪愛線段樹

2021-10-18 22:48:15 字數 1196 閱讀 2572

題目描述

筱瑪是乙個熱愛線段樹的好筱瑪。

筱瑪的爺爺馬爺在遊戲中被筱瑪吊打了,於是他惱羞成怒,決定給筱瑪出這樣一道資料結構題:

給定乙個長度為nn的陣列aa,剛開始每一項的值均為00。

支援以下兩種操作,操作共mm次:

\texttt1 l r:將a_l\sim a_ral∼a r的每一項的值加上11。

\texttt2 l r:執行操作編號在[l,r][l,r]內的所有操作各一次,保證rr小於當前操作的編號。

mm次操作結束後,你要告訴馬爺aa陣列變成什麼樣子了。

由於答案可能會很大,你只需要輸出陣列aa中的每個數在模10^9+710

9+7意義下的值。

輸入描述:

第一行兩個數n,mn,m,分別表示陣列長度及操作次數。

接下來mm行,每行三個數opt,l,ropt,l,r,表示一次操作。

輸出描述:

輸出一行共nn個數,表示mm次操作結束後, 的值。

示例1

輸入

431

1321

1113

輸出

333

0

#include

#include

#include

#include

#include

#include

#define ll long long

using

namespace std;

const

int n=

1e5+

100;

const ll mod=

1e9+7;

ll b[n]

,a[n]

;int op[n]

,l[n]

,r[n]

;void

add(

int x,ll w)

ll query

(int x)

intmain()

for(

int i=m;i>=

1;i--

)else

}for

(int i=

1;i<=n;i++

)return0;

}

x&-x 含義可見以下鏈結

筱瑪愛線段樹 差分

筱瑪愛線段樹 思路 兩次差分。倒著來,從後往前,對操作的次數進行差分,最後把操作一的累加次數進行差分。垃圾題,我說怎麼一直找不到錯,明明寫的對的,造的資料也過了,就因為模mod前沒加mod?行吧,垃圾題。includeusing namespace std const int maxn 1e5 10...

牛客練習賽49 筱瑪愛線段樹 思維

太久沒做題了,看著有牛客就打了一場,果然自閉 題目大意也很明確,給定乙個長度為n,初始全為0的樹組。給定以下兩種操作 思維退化太快。開始老是想著建乙個可持久化的,或者怎瞎搞,發現複雜度都降不下來。後來絕處逢生,想到了將所有的操作倒著做,記錄每乙個操作被後面的操作總共引用了多少次,完美解決。複雜度也能...

牛客練習賽49 D 筱瑪愛線段樹 差分

給定乙個長度為n n 1e5 的陣列a,剛開始每一項的值均為0。支援以下兩種操作,操作共m m 1e5 次 1 l r 將al ar的每一項的值加上1。2 l r 執行操作編號在 l,r 內的所有操作各一次,保證r小於當前操作的編號。m次操作結束後,你要告訴馬爺a陣列變成什麼樣子了。由於答案可能會很...