//想看題目的@willinglive
用線段樹維護這種東西還是第一次寫。。
我們先考慮合併操作。維護f0開始乘的區間和和f1開始乘的區間和。只需要把右邊那段乘上乙個矩陣再加上左邊那段就可以了
單點修改直接做就可以了
區間加呢?我們觀察到每次區間加x就等於把區間加上x*(f0+……+f(r-l))。那麼維護個懶標記就可以了
一開始陣列開小了不然就1a了
#include#includeusing namespace std;
struct tree
tr[1600001];
int a[200001];
long long mod=1000000000;
long long mat[200006][3][3];
long long f[200006];
long long sx[200006];
inline void power(int n)
}inline void up(int p)
inline void down(int p)
inline void build(int p,int l,int r)
else
}inline void change(int p,int l,int r,int x)
else
}inline void cover(int p,int l,int r,int x)
else
}tree nw;
inline tree ask(int p,int l,int r)
if(r>mid)
if(flag1)
else
ans=ans1;
}else
ans=ans2;
return ans;
}}int main()
else if(x==2)
else
}return 0;
}
暑假 實用資料結構 KMP
kmp演算法 kmp演算法是字串匹配演算法,可以在o n 的時間完成,演算法包含兩部分,分別是 構造適配函式與兩串匹配。失配邊的使用大大提高了演算法效率,可以理解為已經成功匹配的字元不在重新匹配,因為我們已經知道它是什麼,對應到演算法中 匹配失敗後應該在最大字首之後繼續匹配,因為某字尾已與最大字首匹...
資料結構啊 基礎知識
基本概念和術語 1 資料 是對客觀事物的符號表示。在電腦科學中其含義是指所有能夠輸入到計算機中並被電腦程式處理的符號集合。2 資料元素 是資料集合中的乙個實體,是電腦程式中加工處理的基本單位。資料元素按其組成可分為簡單型資料元素和複雜型資料元素。簡單型資料元素由乙個資料項組成,所謂資料項就是資料中不...
暑假 實用資料結構 動態範圍查詢問題
動態範圍查詢問題 一 線段樹 點修改 支援操作 update x,v 將ax修改為v query l,r 計算 l,r 內的最小值 1 intminv maxn 2int ql,qr 3int query int u,int l,int r 10 11int p,v a p v 12void upd...