• CF 1368G Shifting Dominoes


    题意

    题意:
    (n imes m)的方格,用多米诺骨牌填满了,可以进行以下操作:
    拿走一个骨牌
    移动其他骨牌,但其他骨牌最终的位置必须至少与一个初始位置重合
    问能构成多少个本质不同的图,两个图不同当且仅当两个空格中的某个空格所在位置不同

    做法

    将一个多米诺骨牌描述成一对二元组
    若存在((a,b)(a,b+1)),考虑左移一位,相当于空格右移两位:((a,b-1)longrightarrow (a,b+1));右移一位同理:((a,b+2)longrightarrow (a,b))
    对于((a,b)(a+1,b))同理

    结论1:不存在环

    证明:
    若存在环,我们能证明环内部(不包括边界)点数为奇数,即内部不可能填满,故不合法
    考虑将环补成矩形,具体的,反复将凹进去的部分补成凸的,显然这样不会改变矩形内点数的奇偶性
    在补好矩阵后,容易得到矩阵的边长均为奇数,由于边界点数为偶数,故内部点数为奇数

    结论2:图为外向森林

    证明:
    由连边方式决定,每个点至多有一个入边

    结论3:相邻两个点所在弱连通图不同

    证明:
    同一弱连通图,点横坐标与纵坐标之和奇偶性相同

    将图黑白染色
    我们考虑能否释放((a_1,b_1)(a_2,b_2)),显然这两个所处的位置颜色不同,充要条件为这两个点至根有交(以多米诺骨牌作为标号)

    若我们释放了两个同一骨牌的点,可以归入一开始直接把这个骨牌拿走的情况

    问题转化为经典的矩阵并(参考IOI2018狼人)

  • 相关阅读:
    《Flutter实战·第二版》
    vue 加载本地 json文件
    如何发布自己的npm包(超详细步骤,博主都在用)_前端小丑CSDN博客_npm 发布自己的包
    前端开发常用JS功能函数
    silo相关
    配置
    RTLRegister Transfer Level
    驱动调试方法 1.查看内核打印日志 2.挂虚拟机调试
    经典版沙盒被启动
    rpcss
  • 原文地址:https://www.cnblogs.com/Grice/p/13606506.html
Copyright © 2020-2023  润新知