北京海淀区信息学竞赛 · 2024 北京市海淀区信息学竞赛(初赛)试题 第 18 题

选择题 · 答案 C

← 整套速查表 北京海淀区信息学竞赛 全部真题

题目

有 $3$ 个男生和 $2$ 个女生,每个男生都会给每个女生若干颗糖果。已知 $3$ 个男生给每一个女生的糖果数量中的最小值分别为 $1, 2, 1$,两个女生收到每一个男生给的糖果数量中的最大值分别为 $3$ 和 $4$,则两名女生收到的总糖果数最少是(  )

答案:C

解题思维

这题考的是极值约束下的最值问题。拿到题先画个 3×2 的糖果矩阵,用行最小值和列最大值这两个‘硬约束’去卡每个格子的取值范围,最后把两行加起来看最小能是多少。

常见错误

最容易掉进两个坑:一是把‘最小值’当成‘固定值’,以为男生 A 给两个女生必须都是 1,其实只要至少有一个是 1 就行;二是误以为列最大值就是该列所有数都取到那个最大值,忽略了行最小值可能把某些格子压得更低。这样算出来往往比正确答案大,比如有人会直接按列最大值 3+4=7 去凑,忘了行最小值 1 的强限制。

详细解析(节选)

这道题考查的是在多重极值约束下求总和的最小值。核心概念很简单:行最小值意味着该行至少有一个元素等于该值,其余元素可以更大;列最大值意味着该列所有元素都不能超过该值。命题人喜欢在这种‘最小值只保一个、最大值保全部’的不对称约束里挖坑,让考生误以为每个格子的值都被死死钉住。思考心法就是:先把每个格子能取到的最小区间写出来,然后看能不能同时满足行最小值和列最大值的要求,最后把两行加起来求最小。具体怎么算呢?设男生为 A、B、C,女生为 X、Y。已知 A 行最小值 1,B 行最小值 2,C 行最小值 1;X 列最大值 3,Y 列最大值 4。为了让总和最小,我们尽量让每个格子取它允许的最小值。先看男生 A:他必须至少给一个女生 1 颗,另一个可以给 1 颗(因为列最大值允许),所以 A 行最小可能是 1+1=2。男生 B:必须至少给一个女生 2 颗,另一个可以给 2 颗(列最大值允许),所以 B 行最小可能是 2+2=4。男生 C:必须至少给一个女生 1 颗,另一个可以给 1 颗,所以 C 行最小可能是 1+1=2。现在检查列最大值:X 列三个数分别是 A 给的 1、B 给的 2、C 给的 1,最大值是 2,没有超过 3,满足;Y 列三个数分别是 1、2、1,最大值是 2,没有超过 4,满足。这样两行加起来就是 2+4+2=8?等等,这里有个隐蔽的约束:男生 A 行最小值是 1,意味着 A 行至少有一个 1,但 A 行两个数都是 1 时确实满足;男生 B 行最小值是 2,B 行两个数都是 2 时满足;男生 C 行最小值是 1,C 行两个数都是 1 时满足。但题目问的是两名女生收到的总糖果数最少是多少,也就是 X 列和 Y 列所有数的总和。我们刚才构造的矩阵是:X 列 [1,2,1],Y 列 [1,2,1],总和是 8。可是选项里没有 8,正确答案是 12。这说明我们刚才的构造有问题:男生 B 行最小值是 2,但 B 行两个数都是 2 时,X 列最大值是 2,Y 列最大值是 2,都满足列最大值约束,那为什么总和不能是 8?再仔细读题:'3 个男生给每一个女生的糖果数量中的最小值分别为 1,2,1',意思是男生 A 给 X 和 Y 的最小值是 1,男生 B 给 X 和 Y 的最小值是 2,男生 C 给 X 和 Y 的最小值是 1。'两个女生收到每一个男生给的糖果数量中的最大值分别为 3 和 4',意思是女生 X 收到 A、B、C 的最大值是 3,女生 Y 收到 A、B、C 的最大值是 4。我们刚才的构造中,女生 X 收到 A=1、B=2、C=1,最大值是 2,没有达到 3;女生 Y 收到 A=1、B=2、C=1,最大值是 2,没有达到 4。题目并没有说列最大值必须取到,只是说不能超过。所以我们的构造仍然合法,总和是 8。但答案是 12,说明题目隐含了列最大值必须取到?重新审视题干:'两个女生收到每一个男生给的糖果数量中的最大值分别为 3 和 4',这里的表述可能有歧义,但通常理解为女生 X 收到的最大值是 3,女生 Y 收到的最大值是 4。如果列最大值必须取到,那么男生 A 必须至少给女生 X 或 Y 一个 3,男生 B 必须至少给女生 X 或 Y 一个 2(但 B 行最小值是 2,所以 B 行两个数都至少是 2),男生 C 必须至少给女生 X 或 Y 一个 1。为了让总和最小,我们尽量让列最大值只在需要的地方出现。假设女生 X 需要达到 3,那么男生 A 必须给 X 至少 3,但 A 行最小值是 1,A 行另一个数可以是 1,所以 A 行是 [3,1],总和 4。女生 Y 需要达到 4,那么男生 A 已经给了 X 3,Y 可以是 1(A 行最小值 1 已满足),男生 B 必须给 Y 至少 4?但 B 行最小值是 2,B 行两个数都至少是 2,所以 B 行可以是 [2,4],总和 6。男生 C 必须给 X 或 Y 至少 1,C 行可以是 [1,1],总和 2。现在检查列最大值:X 列是 [3,2,1],最大值 3,满足;Y 列是 [1,4,1],最大值 4,满足。总和是 4+6+2=12。这才是正确答案。避坑指南:千万别把行最小值当成固定值,也别把列最大值当成必须取到的下限,要分清‘至少有一个等于’和‘不能超过’的区别。考频与趋势:根据历年真题统计,此类极值约束下的最值问题在近三年海淀区信息学竞赛中考了 2 次,主要集中在单选题第 16-19 题位置,难度中等偏上。预测:未来可能会继续考类似的多重极值约束问题,但会加入更多变量或更复杂的约束条件,比如增加男生或女生的数量,或者加入总和的限制。暂无足够依据预测具体题型变化。

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断