AT_arc056_c [ARC056C] 部門分け

题目描述

高桥君所在的公司有 $N$ 名员工。员工 $i$ 和员工 $j$ 之间有一个信任度 $w_{i,j}$。由于公司业务蒸蒸日上,现在需要将 $N$ 名员工分成若干个部门。这里,部门划分的得分定义为(部门数)$\times K$ 减去(属于不同部门的两人之间的信任度总和)。请编写程序,求得分的最大值。

输入格式

输入通过标准输入按以下格式给出。 > $N$ $K$ $w_{1,1}$ ... $w_{1,N}$ : $w_{N,1}$ ... $w_{N,N}$

输出格式

输出第 $1$ 行,给出最大得分。

说明/提示

## 限制条件 - $1 \leq N \leq 17$ - 当 $i \neq j$ 时,$1 \leq w_{i,j} \leq 10^6$ - $w_{i,i} = 0$ - $w_{i,j} = w_{j,i}$ - $1 \leq K \leq 10^6$ - 所有输入均为整数 ## 部分得分 - 若能正确解决所有 $N \leq 9$ 的测试用例,可获得 $40$ 分。 - 若能正确解决所有 $N \leq 15$ 的测试用例,可额外获得 $40$ 分。 ## 样例解释 1 如果将员工 $1$ 和 $3$ 分为一个部门,员工 $2$ 单独为一个部门,则部门数为 $2$,不同部门之间的信任度总和为 $2$,因此得分为 $2 \times 3 - 2 = 4$。没有比得分 $4$ 更高的划分方法。 由 ChatGPT 4.1 翻译