題目描述示例1筱瑪是乙個熱愛線段樹的好筱瑪。
筱瑪的爺爺馬爺在遊戲中被筱瑪吊打了,於是他惱羞成怒,決定給筱瑪出這樣一道資料結構題:
給定乙個長度為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次操作結束後, 的值。
輸入
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陣列變成什麼樣子了。由於答案可能會很...