当前位置:首页 > 贪心 > 正文
CSP2025提高组A社团招新
7+

题目大意:n个人分配给3个部门,每个人分配到这3个部门的价值分别是a、b、c,且不允许出现一个部门超过n/2人,请问最大价值和是多少?

题目描述

小 L 是学校算法协会的成员。在今年的学校社团招新中,小 L 一共招收了 $n$ 个新成员,其中 $n$ 为**偶数**。现在小 L 希望将他们分到协会不同的部门。算法协会共设有三个部门,其中第 $i$ ($1 \leq i \leq n$) 个新成员对第 $j$ ($1 \leq j \leq 3$) 个部门的满意度为 $a_{i,j}$。定义一个分配方案的满意度为所有新成员对分配到的部门的满意度之和,也就是说,若将第 $i$ ($1 \leq i \leq n$) 个新成员分配到了第 $d_i \in \{1,2,3\}$ 个部门,则该分配方案的满意度为 $\sum_{i=1}^{n} a_{i,d_i}$。

小 L 不希望某一个部门的新成员数量过多。具体地,他要求在分配方案中,不存在一个部门被分配多于 $\frac{n}{2}$ 个新成员。你需要帮助小 L 求出,满足他要求的分配方案的满意度的最大值。

输入格式

本题包含多组测试数据。输入的第一行包含一个正整数 $t$,表示测试数据组数。

接下来依次输入每组测试数据,对于每组测试数据:

– 第一行包含一个正整数 $n$,表示新成员的数量。
– 第 $i+1$ ($1 \leq i \leq n$) 行包含三个非负整数 $a_{i,1}, a_{i,2}, a_{i,3}$,分别表示第 $i$ 个新成员对第 $1,2,3$ 个部门的满意度。

输出格式

对于每组测试数据,输出一行一个非负整数,表示满足小 L 要求的分配方案的满意度的最大值。

说明/提示

### 【样例 1 解释】该样例共包含三组测试数据。

对于第一组测试数据,可以将四个新成员分别分配到第 $1,3,1,2$ 个部门,则三个部门的新成员数量分别为 $2,1,1$,均不超过 $\frac{4}{2} = 2$,满意度为 $4 + 4 + 5 + 5 = 18$。

对于第二组测试数据,可以将四个新成员分别分配到第 $1,1,2,2$ 个部门,则三个部门的新成员数量分别为 $2,2,0$,均不超过 $\frac{4}{2} = 2$,满意度为 $0 + 0 + 2 + 2 = 4$。

对于第三组测试数据,可以将两个新成员分别分配到第 $2,1$ 个部门,则三个部门的新成员数量分别为 $1,1,0$,均不超过 $\frac{2}{2} = 1$,满意度为 $9 + 4 = 13$。

### 【样例 2】

见选手目录下的 $\textbf{\textit{club/club2.in}}$ 与 $\textbf{\textit{club/club2.ans}}$。

该样例满足测试点 $3,4$ 的约束条件。

### 【样例 3】

见选手目录下的 $\textbf{\textit{club/club3.in}}$ 与 $\textbf{\textit{club/club3.ans}}$。

该样例满足测试点 $5 \sim 8$ 的约束条件。

### 【样例 4】

见选手目录下的 $\textbf{\textit{club/club4.in}}$ 与 $\textbf{\textit{club/club4.ans}}$。

该样例满足测试点 $9$ 的约束条件。

### 【样例 5】

见选手目录下的 $\textbf{\textit{club/club5.in}}$ 与 $\textbf{\textit{club/club5.ans}}$。

该样例满足测试点 $15,16$ 的约束条件。

### 【数据范围】

对于所有测试数据,保证:

– $1 \leq t \leq 5$;
– $2 \leq n \leq 10^5$,且 $n$ 为偶数;
– 对于所有 $1 \leq i \leq n$,$1 \leq j \leq 3$,均有 $0 \leq a_{i,j} \leq 2 \times 10^4$。

::cute-table{tuack}

| 测试点编号 | $n=$ | 特殊性质 |
| :–: | :–: | :–: |
| $1$ | $2$ | 无 |
| $2$ | $4$ | ^ |
| $3, 4$ | $10$ | ^ |
| $5 \sim 8$ | $30$ | ^ |
| $9$ | $200$ | B |
| $10, 11$ | ^ | 无 |
| $12$ | $10^5$ | A |
| $13, 14$ | ^ | B |
| $15, 16$ | ^ | C |
| $17 \sim 20$ | ^ | 无 |

特殊性质 A:对于所有 $1 \leq i \leq n$,均有 $a_{i,2} = a_{i,3} = 0$。

特殊性质 B:对于所有 $1 \leq i \leq n$,均有 $a_{i,3} = 0$。

特殊性质 C:对于所有 $1 \leq i \leq n$,$1 \leq j \leq 3$,$a_{i,j}$ 均在 $[0, 2 \times 10^4]$ 中独立均匀随机生成。

解题思路

根据特殊性质3的引导,使用贪心算法:每次分配的价值最大的部门。因为随机数据,所以大概率不会出现某个部门超过n/2人的情况。

如果出现这个情况怎么办呢?仅一个部门超出人数限制,我们可以减少这个部门的人数,再次贪心选择价值损失最小的替换即可——换成次大值部门,损失小的优先换。

程序实现

About

坚决不Copy代码!

本文标签:,,,,

报歉!评论已关闭.