zoukankan      html  css  js  c++  java
  • 倪文迪带你学蓝桥杯2021寒假每日一题:1.5日第3题

    2021年寒假每日一题,2017~2019年的省赛真题。
    本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供。

    @

    题目:魔方状态 http://oj.ecustacm.cn/problem.php?id=1319
      2017年蓝桥杯软件类省赛C++语言大学A组第3题,一道填空题。

    1、题目大意

      一个二阶魔方,有6个面,但是只涂了3种颜色:
      (1)前面、下面:涂橙色
      (2)右面、左面:涂绿色
      (3)上面、后面:涂黄色
      然后随便你打乱它,问一共有多少种不同状态。
      如果两个状态经过魔方的整体旋转后,各个面的颜色都一致,则认为是同一状态。

    2、我的尝试

      既然是填空题,看有没有投机取巧的办法。
      正常的二阶魔方,有6种颜色,每个角块都不同,共8种角块。以一个角块不动作为参考角块,其他7个角块都能任意转换方向。有(7!)种情况。
      7个角块排列的时候,只有6格角块可以自由选择方向,第7个角块的方向取决于前6个(玩过魔方都知道,其他7块固定时,1个角块不能在原地转动),有(3^6)种情况。
      所有情况一共有:(7! imes3^6 = 3,674,160)
      正常魔方是很简单的。
      本题只有三种颜色,却复杂得多。倪文迪说用排列组合很难做,本教师不相信。结果浪费半天时间之后,被迫同意他的说法。
      为了找出到底有几种不同的角块,本教师用白纸做了一个破六面体,观察好久,终于发现:
      本题的二阶魔方,涂3种颜色,只有4种不同的角块,每种2个。设三种颜色是1、2、3,这4种角块是:132、312、113、322。
      这4种角块,有三种颜色的角块132、312,和两种颜色的角块113、322。
      问有几种排列?下面尝试排列一下。
      先看2个三色角块132,可以并排放、对角放、反对角放(互相看不见),共3种,每种有3个旋转,共(3 imes3=9)种情况。
      然后再放2个三色角块312......
      ......
      本教师已经晕了,做不下去了。
      偷看了答案,是229878,(229878=43 imes 11 imes3^5 imes2),估计不是一个简单的排列吧。
      据说能用Burnside引理做,哪位大神做了请告诉我,让大家一起学学。

    3、我的放弃

      既然用数学方法想不通,就只能用计算机暴力求解了,基本思路是:模拟魔方的旋转,把每次新的旋转结果看成一个状态,然后用BFS搜索所有的状态,看一共有多少种。当然,还要对状态判重。
      不过,这是一个代码很复杂(很恶心)的模拟题,比赛的时候做,简直是浪费生命、浪费其他题得分的机会。对省赛这种得奖面大的比赛,还是放弃吧。
      最后是倪文迪说的话:“这道题目初看是排列组合,但由于其涂色的特殊性,不方便由组合数学解决。只能考虑终极搜索+模拟......对于这几个块形成的魔方,定义它为一种状态,我们需要做的就是模拟魔方的旋转,并判定当前状态是否与之前出现过的状态重复。然后我们建一维数组,人为规定状态表达,填入到数组中,再判重。”
      参考一位大神写的模拟,非常佩服(小声说一句,运行时间很长很长,不要误会死机了):https://blog.csdn.net/qq_35222235/article/details/79725363

    4、大神的手算

      本博客发布之后,本校大神杭业晟(获得第十一届蓝桥杯全国总决赛A组一等奖)表示,他去学了一下Burnside引理,然后手算了这个题。
      先学这个:Burnside引理
      下面是杭业晟的手算:“我发现立方体有24个置换群...最后再除3是因为只有1/3是能够转的出来的”。

  • 相关阅读:
    iOS6 与iOS7以及7以上状态栏的颜色设置
    XCode常用快捷键的使用
    [Cordova+Sencha Touch] 移动开发1 sencha 2.4.0 + 在 安卓2.3.6上使用报错
    document.addEventListener的使用介绍
    设置aspx页面的地址栏中的Session ID的显示与隐藏
    Android检测网络是否可用并获取网络类型
    程序员必读书籍及导读指南
    ListView的属性及方法详解
    javascript
    CSS
  • 原文地址:https://www.cnblogs.com/luoyj/p/14241709.html
Copyright © 2011-2022 走看看