AvoidStraightLine

ABC312G:Avoid Straight Line

Distance Sums 2的简单扩展,做法完全一致。

题解:https://blog.csdn.net/weixin_52536621/article/details/127039502)(树形那一栏)

考虑对于一个三元组,要求解不在一条简单路径上的三点,发现不好做,那我们可以求在一条简单路径上的三点,然后根据组合数 \(C_n^3-ans\) 即可。

然后发现只要确定了两个端点,然后中间任选一个点即可。这样的方案肯定是唯一的。

我们可以用那道题的做法处理出距离和,减去 \(n-1\)(除掉端点)即可。然后最后因为有两个端点都会算到,所以 \(\div2\)

AC

对于距离和的部分,不需要这么麻烦。

我们直接考虑每条边的贡献即可,每条边的贡献为子树内的所有点 \(\times\) 子树外的所有点

直接一遍 dfs 处理出每条边的贡献加和,然后最后去除两两点对的端点费用(即 \(-C_n^2\))即可,然后再用总方案数减去。

AC2

posted @ 2023-07-30 09:37  wscqwq  阅读(9)  评论(0编辑  收藏  举报