QOJ7221

发布时间 2024-01-10 19:39:28作者: Hanghang007

常规题,如果会北京集训 D1T3,那这题就是砍瓜切菜。

首先注意到如果边没有任何性质的话大概率是个不可做(可能是 NP 但是我不了解)

那肯定就要从边的性质来做这题。

画个图来感受一下:

image

按照边权从大到小排序,连边。可以将点集划分为三部分:

第一部分两两点之间都有边,也就是个团。第二部分的每个点只会向第一部分的每个点连一条边。第三部分是孤立点。

首先孤立点的贡献是简单的,每个点染什么颜色都不会影响答案。

注意到第二部分的点都是向一个第一部分的前缀连边,我们不妨在这个前缀的末尾算贡献。

现在就可以动态规划了,设 \(f_{i,j}\) 表示前 \(i\) 个点有 \(j\) 个白点,贡献(边两边颜色不同)最大是多少。

那么从大到小枚举第一部分的点。

那么加入第一部分的点:\(f_{i,j}=max(f_{i-1,j-1}+i-j,f_{i-1,j}+j)\)

加入第二部分的点:\(f_{i,j}=f_{i,j}+max(i-j,j)\)

题目说还有求方案数,再设 \(g_{i,j}\) 表示前 \(i\) 个点有 \(j\) 个白点取到最大值的时候的方案数。

\(f\) 的更新的时候 \(g\) 顺便维护一下即可。

复杂度 \(O(n^2)\)

应该比题解好想好写。