• 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

  • 相关阅读:
    redis之(十二)redis数据的持久化
    redis之(十一)redis实现缓存的功能
    redis之(十)redis实现消息中间件的功能
    redis之(九)redis的事务机制
    SQL关于IN和EXISTS的用法和区别的比较
    mysql explain extra理解
    mysql explain rows理解
    mysql explain中key_len值的说明
    redis常见重要性能指标数据分析和相关问题解决方案
    java.lang.UnsupportedOperationException解决方法!!!
  • 原文地址:https://www.cnblogs.com/lau1997/p/13811500.html
Copyright © 2020-2023  润新知