又是線段樹……應該是近期寫的第五道線段樹
這道題的難點在於式子推導,雖然我並不會自己推,但是可以證明正確性:∑l
於是就可以維護三個線段樹,表示三個式子,直接寫線段樹就好了,唯一需要注意的地方就是取模,為了避免負數,我們可以寫成 也有必要寫成(x%mod+mod)%mod,不然輸出不正確,最後記得開long long
**:
1 #include 2 #include 3 #include 4using
namespace
std;
5#define ll long long
6ll n,m;
7const
int maxn=1e7;
8 ll mod=20170927
;9 ll x0[maxn],y0[maxn],tree[5
][maxn],mark,p,x1,y1,l,r;
10 inline ll ls(ll x)
11 inline ll rs(ll x)
12 inline void
pushup(ll x)
15 inline void
build(ll x,ll l,ll r)
19 ll mid=(l+r)>>1
;20 build(ls(x),l,mid);build(rs(x),mid+1
,r);
21pushup(x);
22//
for (int i = 1;i <= 3;i++) cout<23
}24 inline void
update(ll x,ll l,ll r,ll pos,ll x1,ll y1)
28 ll mid=(l+r)>>1;29
if (pos<=mid) update(ls(x),l,mid,pos,x1,y1);
30if (pos>mid) update(rs(x),mid+1
,r,pos,x1,y1);
31pushup(x);32}
33inline ll query(ll x,ll l,ll r,ll nl,ll nr,ll num)
41int
main()
51else59}
60return0;
61 }
天才紳士少女助手克里斯蒂娜 推柿子
pdf往下翻突然看見乙個克里斯蒂娜 感覺就像人群當中突然鑽出來乙個光頭 sum limits 2 2 sum limits 2 2 sum limits x i y i sum limits 2 sum limits 2 sum limits 2 2 2 sum limits 2 2 2 sum l...
BZOJ 4399 魔法少女LJJ 線段樹
傳送門 出題人真會玩。操作 2 線段樹合併,然後每棵線段樹維護元素個數和。對於 6 這個詢問,因為乘積太大,所以要用對數。時間複雜度 o nlogn include include include include includeusing namespace std const int n 4000...
BZOJ 4399 魔法少女LJJ 線段樹合併
題目大意 第一行有乙個正整數m,表示操作個數。接下來m行,每行先給出1個正整數c。若c 1,之後乙個正整數x,表示新建乙個權值為x的節點,並且節點編號為n 1 當前有n個節點 若c 2,之後兩個正整數a,b,表示在a,b之間連線一條邊。若c 3,之後兩個正整數a,x,表示a聯通塊內原本權值小於x的節...