2020意大利数学奥林匹克 第6题

试题来源:http://olimpiadi.dm.unibo.it/wp-content/uploads/2020/09/Cesenatico_20.pdf

在一个8×8的网格表中,每个单元格中都有一个骑士或一个骗子。骑士只会说真话,骗子只会说假话。已知每个单元格中的人都说“我所在的列中的骗子个数严格大于我所在的行中的骗子个数”,那么满足条件的布置方法可能有多少种?

·

·

·

·

·

·

·

·

·

·

·

·

·

·

首先进行分类讨论。

假设存在某列有8个骑士0个骗子,那么每行的骗子数应为负数,显然不行,所以不存在某列有8个骑士0个骗子。

假设8列中含有骑士最多的一列有7个骑士1个骗子,不妨让该列在第一列且骗子为最后一个:

这种情况下满足条件的只有下面一种情况:

 由于骗子的位置是任意的,所以这种情况一共有8种方案。

假设8列中含有骑士最多的一列有6个骑士2个骗子,不妨让该列在第一列且骗子为最后2个,那么前六行有1个或0个骗子,假设前6行没有骗子,那么:

  由于骗子的位置是任意的,所以前6行没有骗子时一共有C82种方案。假设前6行存在某行有1个骗子,不妨令其为第一行,且骗子在第二列,那么由于第一行第二列这个骗子的存在,第二列应该有7个骑士,这与含有骑士最多的一列有6个骑士2个骗子矛盾,所以前6行不存在某行有1个骗子。所以8列中含有骑士最多的一列有6个骑士2个骗子时一共有C82种方案。

根据相同的分析方式,可得到:

当列中含有骑士最多的一列有5个骑士3个骗子时一共有C83种方案;

当列中含有骑士最多的一列有4个骑士4个骗子时一共有C84种方案;

 当列中含有骑士最多的一列有3个骑士5个骗子时一共有C85种方案;

  当列中含有骑士最多的一列有2个骑士6个骗子时一共有C86种方案;

  当列中含有骑士最多的一列有1个骑士7个骗子时一共有C87种方案;

所以最后的结果为:2*(8+C82+C83)+C84

原文地址:https://www.cnblogs.com/lau1997/p/13811500.html