CF1483D - Useful Edges 题解

不难发现一条边 \((x,y)\) useful 当且仅当存在两个点 \((a,b)\) 满足 \(dis_{a,x}+eg_{x,y}+dis_{y,b}\leq l_{a,b}\)。由于题目保证 \(eg\)\(l\) 的给定都没有重边,所以直接枚举点们是正确的。但是是四方的,考虑优化之。

\(l\) 移过来之后,发现任意一个变量都独立不开来,不好处理。容易发现,四个变量之间的关联关系是一个四元环,而枚举变量可以把当前点删除。我们的目的就是枚举一些点,删点之后使得剩下的都是孤立点,这样就能对每个点独立枚举处理了。

不难发现枚举对角点的方案,例如枚举 \(a,y\)。这样一来 \(dis_{a,x},eg_{x,y}\) 成了关于 \(x\) 的函数,\(dis_{y,b},l_{a,b}\) 成了关于 \(b\) 的函数,于是可以分别独立处理:计算 \(dis_{y,b}-l_{a,b}\) 的最小值,然后枚举 \(x\) 看是否有 \(dis_{a,x}+eg_{x,y}+mn\leq 0\) 即可。这样就降了一方。

(以上都是瞎写的,别当真。实际上稍微乱想就出来了,这是个较为简单的 d1d)

posted @ 2021-04-15 22:27  ycx060617  阅读(92)  评论(0编辑  收藏  举报