zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    composer 中国全量镜像 laravel-china.org
    Increase PHP script execution time with Nginx
    How to make a USB stick use ISO image file in debian
    Getting svn to ignore files and directories
    Carbon document
    Use Laravel/homestead 环境维护基于 brophp 开发的老项目
    Vagrant WinNFSd
    How to use jQuery countdown plugin
    消息系统的设计与实现
    VMvare 复制的数据库,需要改变的配置
  • 原文地址:https://www.cnblogs.com/lau1997/p/13811500.html
Copyright © 2011-2022 走看看