P4121 WC2005 雙面棋盤

2022-05-20 20:13:10 字數 1192 閱讀 8362

p4121 [wc2005]雙面棋盤

貌似是劉汝佳出的題目??

線段樹維護並查集

線段樹分治\(1\)~\(n\)行,我們要考慮維護的肯定是黑、白各自的聯通塊數量

考慮區間合併,其實就與中間這兩層有關,\((n≤200)\)並查集暴力做一下就好了

#include#include#include#include#includeusing namespace std;

typedef int ll;

const ll maxn=500;

inline ll read()

while(c>='0'&&c<='9')x=(x<<3)+(x<<1)+c-'0',c=getchar();

return x*f;

}ll n,nod,root,m;

ll a[210][210],fa[maxn<<1],belong[maxn<<1];

struct treet[maxn<<1];

ll get_fa(ll x)

inline void first(ll now,ll x)

}inline void update(ll now,ll mid,ll lc,ll rc)

for(ll i=1;i<=n;++i)

}for(ll i=1;i<=n;++i)

for(ll i=n+1;i<=2*n;++i)

for(ll i=1;i<=n;++i)

}void build(ll &now,ll l,ll r)

ll mid(l+r>>1);

build(t[now].son[0],l,mid),build(t[now].son[1],mid+1,r);

update(now,mid,t[now].son[0],t[now].son[1]);

}void change(ll now,ll l,ll r,ll c)

ll mid(l+r>>1);

if(c<=mid)

change(t[now].son[0],l,mid,c);

else

change(t[now].son[1],mid+1,r,c);

update(now,mid,t[now].son[0],t[now].son[1]);

}int main()

return 0;

}

P4294 WC2008 遊覽計畫

題目鏈結 題目描述 從未來過紹興的小d有幸參加了winter camp 2008,他被這座歷史名城的秀麗風景所吸引,強烈要求遊覽紹興及其周邊的所有景點。主辦者將紹興劃分為 n nn 行 m mm 列 n m n m n m 個分塊,如下圖 8 景點含於方塊內,且乙個在這裡插入描述 方塊至多有乙個景點...

P4172 WC2006 水管局長

題目鏈結 題目背景 sc 省 my 市有著龐大的地下水管網路,嘟嘟是 my 市的水管局長 就是管水管的啦 題目描述 每天供水公司可能要將一定量的水從 u uu 處送往 v vv 處,嘟嘟需要為供水公司找到一條從 u uu 至 v vv 的水管的路徑,接著通過資訊化的控制中心通知路徑上的水管進入準備送...

P4172 WC2006 水管局長

bzoj 那個是加強版 lct 維護動態最小瓶頸樹 題意 給乙個圖,每次詢問兩個點之間路徑的最大值的最小值,或斷開乙個邊,始終保證圖連通 用 lct 維護,發現斷邊不怎麼好做,所以離線下來倒序處理,常規套路 就是先跑乙個最小瓶頸生成樹,然後每次加邊,如果加的這個邊的邊權大於它兩個端點間原來路徑的最大...