题解-APIO2019桥梁】的更多相关文章

problem \(\mathrm {loj-3145}\) 题意概要:给定一张 \(n\) 点 \(m\) 边的无向图,边有边权,共 \(q\) 次操作,每次会将第 \(x\) 条边的权值改为 \(y\),或询问从 \(x\) 开始只走大于等于 \(y\) 的边能到达多少点. \(n\leq 5\times 10^4,\ m,q\leq 10^5\) Solution 这道题和 \(HNOI2016\) 最小公因数 长得很像,想到分块就会了.由于这题有修改,对询问的权值分块不好做,就只能对操作…
[LOJ#3145][APIO2019]桥梁(分块,并查集) 题面 LOJ 题解 因为某个\(\text{subtask}\)没判\(n=1\)的情况导致我自闭了很久的题目... 如果没有修改操作,可以克鲁斯卡尔重构树在线处理.或者按照边权排序离线并查集处理. 现在有修改操作,于是我们来分块. 我们对于操作分块,每\(B\)个操作作为一组处理.不同组之间显然影响不大. 所以我们只需要处理同一组的就好了. 把边分成两类,一类是不会被修改的,这些边直接排序做前面的并查集就好了,这部分复杂度是\(O(…
考虑若只有查询操作,那么就可以构造\(Kruskal\)重构树,然后在线询问了,也可以更简单的把询问离线,把询问和边都按权值从大到小排序,然后双指针依次加入对于当前询问合法的边,用并查集维护每个点的答案即可. 现在加上修改操作,考虑可以对所有操作分块,对块内所有询问操作排序,和之前的离线做法一样,用双指针依次加边. 但是有些边会在块内这些操作中涉及修改,那么对于每个询问,暴力扫一遍块内的修改操作,若一个修改操作在当前询问的时间点之前,那么就执行对应边的修改,执行完所有能够执行的修改后,再考虑这些…
problem \(\mathtt {loj-3146}\) 题意概要:一条直线上有 \(n+1\) 个点和 \(n\) 条道路,每条道路连通相邻两个点.在 \(q\) 个时刻内,每个时刻有如下两种操作之一: 切换某条道路的状态,即:若原来是连通的,则现在断开:若原来断开,则现在连通 给出 \(x,y\),询问在这次询问之前,有多少个时刻满足 \(a\rightarrow b\) 的道路连通(即这一段的道路都连通) \(n,q\leq 3\times 10^5\),时限 \(5s\) Solut…
problem loj-3144 题意概要:设函数 \(f(t)\) 的返回值为一个二元组,即 \(f(t)=((t+\lfloor \frac tB\rfloor)\bmod A, t\bmod B)\),现在给出 \(n\) 个区间,问 \(t\) 在这 \(n\) 个区间中取值时,有多少个不同的 \(f(t)\). \(n\leq 10^6,\ l_i,r_i,A,B\leq 10^{18}\),区间互不相交 Solution 一开始没啥想法,\(loj\) 的题面上写了 \(l_i\le…
传送门 子任务 $4$ 告诉我们可以离线搞带权并查集 从大到小枚举询问,从大到小连边 如果没有修改操作就可以过了 但是有修改,考虑最暴力的暴力,搞可撤销并查集 同样先离线,从大到小处理询问时,按原边权从大到小枚举到一条边时,如果他一直都没有修改,那么直接加入并查集 如果有修改那先不要加,枚举所有修改看看当前时间它的边权,然后如果它的边权大于等于询问权值,才加入并查集 最后还得撤销有修改的边,因为它们修改后的边权不满足从大到小 这样复杂度显然很高,因为我们每次都要撤销一堆操作,还要枚举所有修改 考…
分块+并查集,大板子,没了. 并查集不路径压缩,可撤销,然后暴力删除 这样对于每个块都是独立的,所以直接搞就行了. 然后块内修改操作搞掉,就是单独的了 // powered by c++11 // by Isaunoya #include <bits/stdc++.h> #define rep(i, x, y) for (register int i = (x); i <= (y); ++i) #define Rep(i, x, y) for (register int i = (x);…
Luogu P5444 [APIO2019]奇怪装置 看到这种题,我们肯定会想到\((x,y)\)一定有循环 我们要找到循环节的长度 推一下发现\(x\)的循环节长为\(\frac{AB}{B+1}\).等一下,\(t\)是整数,所以循环节长为\(\frac{AB}{GCD(A,B+1)}\) \(y\)的循环节长为\(B\) 所以\((x,y)\)的循环节长为\(lcm(\frac{AB}{GCD(A,B+1)},B)=\frac{AB}{GCD(A,B+1)}\) 对每个时间段对循环节长取模…
Description 给定一张 \(n\) 个点,\(m\) 条边的无向图,边 \(i\) 的权值为 \(d_i\).现有 \(q\) 次操作,第 \(j\) 个操作有两种模式: \(1\ b_j\ r_j\):将第 \(b_j\) 条边的权改为 \(r_j\). \(2\ s_j\ w_j\):询问与点 \(s_j\) 连通的点的数量(包括自己).若边 \((u, v)\) 的权值 \(d \ge w_j\),那么视作 \(u, v\) 连通.若 \((a, b), (b, c)\) 分别连…
APIO2019 题解 T1 奇怪装置 题目传送门 https://loj.ac/problem/3144 题解 很容易发现,这个东西一定会形成一个环.我们只需要求出环的长度就解决了一切问题. 设环的长度为 \(l\).那么从 \((0, 0)\) 出发,走 \(l\) 步一定可以再次回到 \((0, 0)\). 也就是说 \[ \left\{ \begin{align*} & A \mid l + \lfloor \frac lB \rfloor\\ & B \mid l \end{al…