Warning: session_start(): open(/tmp/sess_9ec8293e3940f1fadb6e33f0167b3b2e, O_RDWR) failed: No space left on device (28) in /data/wiki/inc/init.php on line 239

Warning: session_start(): Failed to read session data: files (path: ) in /data/wiki/inc/init.php on line 239

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/auth.php on line 430
Writing /data/wiki/data/cache/d/de2edb2fcb553ea79b79c722a4e13dbc.captchaip failed

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/actions.php on line 38

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/lib/tpl/dokuwiki/main.php on line 12
2020-2021:teams:farmer_john:jjleo:2020.09.06-2020.10.14 [CVBB ACM Team]

用户工具

站点工具


2020-2021:teams:farmer_john:jjleo:2020.09.06-2020.10.14

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
2020-2021:teams:farmer_john:jjleo:2020.09.06-2020.10.14 [2020/10/22 08:32]
jjleo [题意]
2020-2021:teams:farmer_john:jjleo:2020.09.06-2020.10.14 [2020/10/22 09:35] (当前版本)
jjleo [题解]
行 72: 行 72:
 二维平面上 $n$ 个点,如果两个点的横坐标或纵坐标相同,那么可以在它们之间连边,边的长度为两者距离之差。现在可以额外添加一个点,问能否使图联通,如果可以,所有边最大值的最小值是多少。 二维平面上 $n$ 个点,如果两个点的横坐标或纵坐标相同,那么可以在它们之间连边,边的长度为两者距离之差。现在可以额外添加一个点,问能否使图联通,如果可以,所有边最大值的最小值是多少。
 ====题解==== ====题解====
 +二分答案 $\text{mid}$,那么所有横坐标相同或纵坐标相同且距离不超过 $\text{mid}$ 的点之间可以连边。我们对连通块的数量分类讨论: 
 +  * 1 个连通块,当前情况直接合法。 
 +  * 2 个连通块,直接枚举两个点,如果两个点属于两个连通块且它们距离不超过 $2\text{mid}$ 则合法。 
 +  * 3 个连通块,新加的点一定与两点共线,这条线与它和第三点连线垂直,且这三个点属于各自的连通块。枚举所有相邻的两点共线的点以及其它单个点,看是否交点满足到三个点距离都不超过 $\text{mid}$。注意上述三个点要属于三个连通块,且前者只需要枚举相邻的即可,因为如果不相邻两者距离肯定已经超过 $2\text{mid}$。 
 +  * 4 个连通块,类似 3 个连通块,只不过变成了四个点所连成的两条线段相交,二重枚举垂直和水平的相邻连线判断即可,注意这四个点要属于不同的连通块。 
 +  * 连通块数量如果超过 4,无解,因为加一个点最多能连四条边。 
 +时间复杂度 $O(n^2)$。
 =====CF1420E===== =====CF1420E=====
 ====题意==== ====题意====
 +给定一个 $\texttt{01}$ 串,每次操作可以交换相邻的两个 $\texttt{0}$ 和 $\texttt{1}$,问至多操作 $0$ 到 $\frac{n(n-1)}{2}$ 次,两者中间至少有一个 $\texttt{1}$ 的 $\texttt{0}$ 的对数最大值。
 ====题解==== ====题解====
 +答案等于任意选 $\texttt{0}$ 的对数减去在连续 $\texttt{0}$ 段选的对数。
  
 +设 $pos_i$ 为第 $i$ 个 $\texttt{1}$ 的位置,一共有 $cnt$ 个 $\texttt{1}$,$f_{i,​j,​k}$ 表示第 $i$ 个 $\texttt{1}$,已经到第 $j$ 位,操作了 $k$ 次需要减去的对数的最小值,有如下转移方程:$$f_{i,​j,​k}=\min_{t=0}^{j-1}(f_{i - 1,t,k - |pos[i] - j|} + \frac{(j - t - 1) * (j - t - 2)}{2})$$ 对于每一个状态,最后还要减掉最后的一段 $\texttt{0}$,即为 $$ans_i=\frac{(n - cnt)(n - cnt - 1)}{2} - \min_{j=1}^{n}(f_{cnt,​j,​i}+\frac{(n - j)(n - j - 1)}{2})$$ 时间复杂度为 $O(n^4)$。
 =====CF1416D===== =====CF1416D=====
 ====题意==== ====题意====
 +给出一张无向图,一开始第 $i$ 个点上面写着数字 $i$,有如下两种操作: ​  
 +  * 输出点 $x$ 所在连通块里面写着数字最大的点上面的数字,并将其改为 $0$。 
 +  * 删除一条边。
 ====题解==== ====题解====
 +考虑逆向过程,将删边改为加边,建出 Kruskal 重构树,非叶节点的权值代表子树中是第 $i$ 次删边操作前可以到达的连通块,之后倍增找祖先再套一个线段树维护 dfs 序,维护最小值和修改最小值即可。
 =====CF1408E===== =====CF1408E=====
 ====题意==== ====题意====
 +$m$ 个集合,里面放 $1$ 到 $n$ 的正整数。对于集合 $i$,如果里面有元素 $j$ 和 $k$,则在它们之间连一条颜色为 $i$ 的边。删除集合 $i$ 里面的数 $j$ 需要耗费 $a_i + b_j$ 的金钱,问使图不存在所有边颜色均不相同的环最少需要耗费多少钱。
 ====题解==== ====题解====
 +新建 $m$ 个点代表每个集合,将集合里每个元素像对于集合代表的点连边,可以发现这样构造后原图有彩虹环等价于新图有环,直接求最大生成树即可,然后用总权值减去生成树上的边权之和。
 =====CF1408G===== =====CF1408G=====
 ====题意==== ====题意====
2020-2021/teams/farmer_john/jjleo/2020.09.06-2020.10.14.1603326740.txt.gz · 最后更改: 2020/10/22 08:32 由 jjleo