闲扯
终于有一道考试能想出做法而且不会打炸的题了泪目。
$T1$
Solution
由于要使得距离最大,我们考虑贪心的进行匹配。
假设对边 $(u,v)$ 来说,它的一边有 $j$ 个男生,有 $k$ 个女生,那么我们一定有 $\min(j,m-k)$ 个男生和另外一边的女生配对,有 $\min(k,m-j)$ 个女生和另外一边的男生配对。
那么该边贡献就为 $w\cdot (\min(j,m-k)+\min(k,m-j))$ ,化简一下得到: $w\cdot \min(j+k,2m-j-k)$ 。
一共有 $\binom{m}{j}\cdot \binom{m}{k}$ 种分配方法,每个人的站位共有 $sz^{j+k}\cdot (n-sz)^{2m-j-k}$ 种,其中 $sz$ 为深度较深的点所在子树大小。
将每条边的权值下放到深度较深的点上,那么我们得到答案为:
至此我们得到了一个 $O(n^3)$ 的做法。
考虑优化。我们可以发现当 $j+k$ 确定时,变化的部分只有 $\sum_{j=0}^m\sum_{k=0}^m \binom{m}{j}\cdot \binom{m}{k}$ 。
我们只需要将其预处理出来,然后枚举 $j+k$ 即可做到 $O(n^2)$ 。
Code
1 |
|
$T2$
Solution
处理环上问题,我们先将环拆成链。
由于相邻的不能相同,我们在每个相邻处经链断开,这样链就变成了几段,每次只需要考虑端点是否相同即可。
我们考虑一个长为 $k$ 的链是否可行,如果可行的话,那么对应的删去 $n-k$ 个就是可行的。
对于每一段,我们枚举长度 $k$ ,只要满足 $s[l\cdots r-k+1]\not=s[l+k-1\cdots r]$ ,我们即可找出至少一组可行解。
这个可以用字符串 $hash$ 解决。
时间复杂度上界为 $O(n)$ ,可能跑不满。
Code
1 |
|