BZOJ4785 Zjoi2017 樹狀陣列

2022-05-08 04:21:12 字數 2124 閱讀 3617

作者部落格:

正解:二維線段樹

解題報告:

考場上我一眼看出了這個變成了字尾和,然而被$l=1$坑成了暴力分==  好坑啊…

考慮變成字尾和之後,我們只需要$check$一下$l-1$和$r$的被修改次數是否相同,這個概率如果我們能維護的話每次直接查詢就好了。

我們把$(x,y)$看成乙個二維數點,表示$x$與$y$修改次數相同的概率,那麼不相同的概率也能直接算了。

為了方便,我們只記錄$x

考慮每次查詢直接查詢$(l-1,r)$就好了。

對於修改呢,對於$[1,l-1]$、$[l+1,r]$這兩個區間都會對$[l,r]$中的數有$1-p$的概率不改變相同性,$p=1/區間長度$,即選中區間乙個數的概率。

而考慮區間內部的情況呢,就是$1-p*2$。

這個東西直接在二維線段樹上維護就好了,這個標記可以直接合併,因為兩個概率可以用$p1*p2+(1-p1)*(1-p2)$的式子合併。

注意卡卡空間,卡卡常數==

//it is made by ljh2000

//有志者,事竟成,破釜沉舟,百二秦關終屬楚;苦心人,天不負,臥薪嘗膽,三千越甲可吞吳。

#include #include #include #include #include #include #include #include #include #define lc root<<1

#define rc root<<1|1

#define rep(i,j,k) for(int i=j;i<=k;i++)

#define reg(i,x) for(int i=first[x];i;i=next[i])

using namespace std;

typedef long long ll;

const int maxn = 200011;

const int mod = 998244353;

int n,m,cnt,rt[maxn*3];

int ans,p[maxn*180];

struct nodea[maxn*180];//維護二元組修改次數相等的概率

inline int fast_pow(int x,int y) return r; }

inline int merge(int x,int y)

inline int getint()

inline void build(int root,int l,int r)

inline void modify(int &root,int l,int r,int ql,int qr,int cc)

int mid=(l+r)>>1;

if(ql<=mid) modify(a[root].ls,l,mid,ql,qr,cc);

if(qr>mid) modify(a[root].rs,mid+1,r,ql,qr,cc);

}inline void modify(int root,int l,int r,int ql,int qr,int down,int up,int cc)

int mid=(l+r)>>1;

if(ql<=mid) modify(lc,l,mid,ql,qr,down,up,cc);

if(qr>mid) modify(rc,mid+1,r,ql,qr,down,up,cc);

}inline void query(int &root,int l,int r,int pos)

inline void query(int root,int l,int r,int posx,int posy)

inline void work()

//[l,r]->[r+1,n] 1-p

if(r[l,r] 1-p*2

if(l!=r) modify(1,1,n,l,r,l,r,(1-p*2+mod+mod)%mod);

//l=1說明查詢字首和和字尾和是否相等

//那麼修改序列中每個數的字首和與字尾和相等概率

modify(rt[0],1,n,l,r,p);//只有修改到自己才不會改變字首和與字尾和的相等性

} else }}

int main()

//有志者,事竟成,破釜沉舟,百二秦關終屬楚;苦心人,天不負,臥薪嘗膽,三千越甲可吞吳。

BZOJ1003 ZJOI 物流運輸

物流公司要把一批貨物從碼頭a運到碼頭b。由於貨物量比較大,需要n天才能運完。貨物運輸過程中一般要轉停好幾個碼頭。物流公司通常會設計一條固定的運輸路線,以便對整個運輸過程實施嚴格的管理和跟蹤。由於各種因素的存在,有的時候某個碼頭會無法裝卸貨物。這時候就必須修改運輸路線,讓貨物能夠按時到達目的地。但是修...

ZJOI2007 BZOJ1059 矩陣遊戲

description 第一行包含乙個整數t,表示資料的組數。接下來包含t組資料,每組資料第一行為乙個整數n,表示方陣的大小 接下來n行為乙個n n的01矩陣 0表示白色,1表示黑色 output 輸出檔案應包含t行。對於每一組資料,如果該關卡有解,輸出一行yes 否則輸出一行no。sample i...

bzoj 1096 ZJOI2007 倉庫建設

time limit 10 sec memory limit 162 mb submit 3607 solved 1582 submit status discuss l公司有n個工廠,由高到底分布在一座山上。如圖所示,工廠1在山頂,工廠n在山腳。由於這座山處於高原內 陸地區 乾燥少雨 l公司一般把...