apio場外選手沒事休閒做題。(看了yyb的題解才把這題做出來)
對操作進行分塊,把每\(\text\)個操作分成1組,裡面大概有2類:沒被修改過的和被修改過的。
接著對塊內詢問進行離線。
對於沒有修改過的:我們可以直接排序然後把他們加入並查集。
對於修改過的,我們看他的時間是否大於當前操作的時間,如果大於則加入原來的權值,如果小於則用修改後的權值。
最後答案其實就是查一下連通塊的大小。
再注意一點,因為這裡的並查集是支援撤回的,所以並不能路徑壓縮。
// luogu-judger-enable-o2
#include const int maxm = 1e5 + 10;
inline void _swap(int& a,int& b)
templateinline void read(t& res)
int n, m, i, j, k, tote, totq, top, lastop, sz;
int fa[maxm], sz[maxm], id[maxm], ans[maxm], r[maxm];
std::pairsta[maxm];
int find(int u)
inline void union(int u,int v)
bool vis[maxm];
struct edge
edge(int _u,int _v,int _w,int _id)
inline friend bool operator < (edge a,edge b)
} e[maxm], e1[maxm], e2[maxm];
struct node
node(int _id,int _t,int _b,int _r)
inline friend bool operator < (node a,node b)
} q[maxm], x[maxm], y[maxm];
inline void solve()
std::sort(y + 1,y + tot2 + 1);
for(int i = 1;i <= m;i++)
id[ e[i].id ] = i;
int j = 1;
for(int i = 1;i <= tot2;i++)
lastop = top;
for(int j = 1;j <= tot1;j++)
r[ x[j].b ] = e[ id[ x[j].b ] ].w;
for(int j = 1;j <= tot1;j++)
if(x[j].id < y[i].id)
r[ x[j].b ] = x[j].r;
for(int j = 1;j <= tot1;j++)
if(r[ x[j].b ] >= y[i].b)
union(e[ id[ x[j].b ] ].u,e[ id[ x[j].b ] ].v);
ans[ y[i].id ] = sz[ find(y[i].r) ];
while(top > lastop)
}for(int i = 1;i <= tot1;i++)
e[ id[ x[i].b ] ].w = x[i].r;
tot1 = tot2 = 0;
for(int i = 1;i <= m;i++)
std::sort(&e1[1],&e1[tot1 + 1]);
std::merge(&e[1],&e[tot2 + 1],&e1[1],&e1[tot1 + 1],&e2[1]);
for(int i = 1;i <= m;i++)
e[i] = e2[i];
}int main()
if(totq)
solve();
for(int i = 1;i <= q;i++)
if(ans[i])
printf("%d\n",ans[i]);
return 0;
}
洛谷 P5443 橋梁
題意見洛谷。以下認為所有 log 同階,用 log n 表示 首先在我認知範圍內似乎稍微複雜一點的圖上詢問題都沒有polylog做法。先來考慮暴力。先上乙個sb都會的暴力 修改就直接改,查詢就把所有符合條件的邊連起來建出一張圖跑dfs。mathrm o qm 再考慮乙個稍微經過大腦的想法。假如問題是...
洛谷 P3629 APIO2010 巡邏
題目在這裡 這是乙個紫題,當然很難。我們往簡單的想,不建立新的道路時,從1號節點出發,把整棵樹上的每條邊遍歷至少一次,再回到1號節點,會恰好經過每條邊兩次,路線總長度為 2 n 1 根據樹的深度優先遍歷思想,很容易證明這個結論,因為每條邊必然被遞迴一次,回溯一次。建立1條新道路之後,因為新道路必須恰...
洛谷P3621 APIO2007 風鈴
你準備給弟弟 ike 買一件禮物,但是,ike 挑選禮物的方式很特別 他只喜歡那些能被他排成有序形狀的東西。你準備給 ike 買乙個風鈴。風鈴是一種多層的裝飾品,一般掛在天花板上。每個風鈴都包含一些由豎直線連起來的水平杆。每根杆的兩頭都有線連線,下面或者掛著另一根水平杆,或者掛著乙個玩具。下面是乙個...