解析

首先我们需要对多米诺问题2专门进行研究得到一些性质

所以对于答案本身,如果不存在障碍物,那么总方案的数值就一定是一个斐波那契数。

假设如果存在障碍会有什么情况,首先障碍一定是偶数个,不然放置奇数个的话,整体的方案是一定为0的,和题意不符。

下图有两种障碍的放置方法

如果是横向放着,我们会发现,障碍的底下只能用红色横线的方法,答案固定,现在整体方案变成了左侧的方案数 乘以 右侧的方案数量。

或者是竖着放置,整体方案也是变成了左侧的方案数 乘以 右侧的方案数量。

长度 \(n\) 要求最小,所以一定是竖着放置障碍,另外多列障碍和一列障碍,对方案数影响是一样的。

所以题意转换为

m是方案数,等于多个斐波那契数相乘,比如现在得到的是dp[A] 乘以 dp[B] 乘以 dp[C], 最小长度就是 A + 1 + B + 1 + C, 其中1代表竖着的一列障碍, 如下图

所以考虑用搜索将一个 \(m\) 变成多个斐波那契数相乘,找到最优解。

这里需要注意的一点是,第 \(88\) 个斐波那契数已经大于 \(1e18\) ,所以枚举范围限定在 \(1 \sim 87\) 之间, \(1\) 答案需要特殊判断。

这里可以利用最优性剪枝,和有效性剪枝,每次枚举的斐波那契数大于等于之前的,并且不能大于已有的答案。

这里提供搜索剪枝和记忆化搜索两种写法。

记忆化搜索参照:

搜索剪枝参照:

U562068 - 经典多米诺的更多相关文章

  1. 【Tsinghua OJ】多米诺骨牌(domino)问题

    (domino.c/cpp)[问题描述] 小牛牛对多米诺骨牌有很大兴趣,然而她的骨牌比较特别,只有黑色和白色的两种.她觉 得如果存在连续三个骨牌是同一种颜色,那么这个骨牌排列便是不美观的.现在她有n个 ...

  2. 多米诺(codevs 3052)

    题目描述 Description 一个矩形可以划分成M*N个小正方形,其中有一些小正方形不能使用.一个多米诺骨牌占用两个相邻的小正方形.试问整个区域内最多可以不重叠地放多少个多米诺骨牌且不占用任何一个 ...

  3. [CareerCup] 6.2 Dominos on Chess Board 棋盘上的多米诺

    6.2 There is an 8x8 chess board in which two diagonally opposite corners have been cut off. You are ...

  4. 省选训练赛第4场D题(多米诺骨牌)

    题目来自FZU2163 多米诺骨牌 Time Limit: 1000 mSec    Memory Limit : 32768 KB  Problem Description Vasya很喜欢排多米诺 ...

  5. wikioi3052 多米诺

    题目描述 Description 一个矩形可以划分成M*N个小正方形,其中有一些小正方形不能使用.一个多米诺骨牌占用两个相邻的小正方形.试问整个区域内最多可以不重叠地放多少个多米诺骨牌且不占用任何一个 ...

  6. 【01背包】洛谷P1282多米诺骨牌

    题目描述 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点.现有排成行的 上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|.例如在图8-1中,S1=6+1+1+1=9, ...

  7. 多米诺骨牌放置问题(状压DP)

    例题: 最近小A遇到了一个很有趣的问题: 现在有一个\(n\times m\)规格的桌面,我们希望用\(1 \times 2\)规格的多米诺骨牌将其覆盖. 例如,对于一个\(10 \times 11\ ...

  8. P1282 多米诺骨牌 (背包变形问题)

    题目描述 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点.现有排成行的 上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|.例如在图8-1中,S1=6+1+1+1=9, ...

  9. [LeetCode] Push Dominoes 推多米诺骨牌

    There are N dominoes in a line, and we place each domino vertically upright. In the beginning, we si ...

  10. [Swift]LeetCode790. 多米诺和托米诺平铺 | Domino and Tromino Tiling

    We have two types of tiles: a 2x1 domino shape, and an "L" tromino shape. These shapes may ...

随机推荐

  1. NOIP模拟赛(10.17):语言,色球,斐波,偶数

    语言 题面: 牛妹正在学习一种新的语言,在这种语言里,单词只有形容词(\(\texttt{A}\)),名词(\(\texttt{N}\))和动词(\(\texttt{V}\))三种词性.但是一个单词可 ...

  2. JavaScript入门笔记day2

    文章目录 常用互动方法 1. document.write() 直接向页面输出内容 2. `alert();`弹出消息对话框 3. confirm消息对话框 4. prompt弹出消息对话框,用于需要 ...

  3. Hystrix 服务的隔离策略对比,信号量与线程池隔离的差异

    支持的隔离策略 Hystrix支持的 hytrix支持线程池隔离和信号量隔离 信号量的隔离: it executes on the calling thread and concurrent requ ...

  4. WindowsPE文件格式入门06.手写最小PE

    https://bpsend.net/thread-346-1-1.html 实现目标 实现目标:手写实现不大于 200 Byte大小的PE文件(又名:畸形PE/变形PE),要求MessageBox弹 ...

  5. 微软开源bitnet b1.58大模型,应用效果测评(问答、知识、数学、逻辑、分析)

    微软开源bitnet b1.58大模型,应用效果测评(问答.知识.数学.逻辑.分析) 目       录 1.     前言... 2 2.     应用部署... 2 3.     应用效果... ...

  6. Feign Client 超时时间配置

      在Spring Boot微服务架构中,大部分公司都是利用Open Feign进行服务间的调用,而在业务场景比较简单的时候,使用默认配置是不会遇到多大问题的.但是如果业务比较复杂,服务要进行比较繁杂 ...

  7. Spring @Controller、@Component和@Autowired等几个最常见的注解

    在如今Spring Boot和Spring Cloud风生水起,Spring注解开发已成为主流开发模式,本篇将介绍常用的组件注册方式.我们所说的组件注册其实就是Spring 把合适的java类全部注册 ...

  8. MAC系统13.2,安装最新版logi options+,打开一直转圈

    我联系官网客服,按照他给的步骤成功的安装了options+,你试试 请抽出时间按照下面列出的故障排除步骤尝试解决问题. 卸载我们所有的软件 删除剩余文件 步骤 1:打开 Finder,在菜单栏中选择& ...

  9. (原创)[C#]一步步解决DotNetZip因超长路径(MAX_PATH)报错的问题。

    一.前言 超长路径(MAX_PATH)的问题,在很多地方都可能遇到,常见的解决办法无非三种:添加前缀\\?\.app.config添加配置.修改注册表等. 而对于其它第三方的DLL,我们如何去从外部解 ...

  10. 数栈技术分享:详解FlinkX中的断点续传和实时采集

    数栈是云原生-站式数据中台PaaS,我们在github和gitee上有一个有趣的开源项目:FlinkX,FlinkX是一个基于Flink的批流统一的数据同步工具,既可以采集静态的数据,也可以采集实时变 ...