数学题

令 \(A_n\) 为 \(2\times n\) 的墙壁放满块的方案数,考虑递推。

显然 \(A_0=1\),我们令对于 \(k<0\),\(A_k=0\) .

放直线型的块非常好递推:

此时答案即为 \(A_{n-1}+A_{n-2}\) .

接下来考虑放 L 型块的:

显然,两个 L 型块可以并成长方形:

但是也可以通过摆几个横着的块再合并:

所以此时答案为 \(2(A_{n-3}+A_{n-4}+\cdots+A_0)\) .

把两个加起来,得到

\[\large\begin{aligned}A_n&=A_{n-1}+A_{n-2}+2\left(\sum_{i=0}^{n-3}F_i\right)\\&=A_{n-1}+A_{n-2}+\sum_{i=0}^{n-3}A_i+\sum_{i=0}^{n-3}A_i\\&=\sum_{i=0}^{n-1}A_i+\sum_{i=0}^{n-3}A_i&\end{aligned}
\]

如果直接暴力转移每次是 \(O(n)\) 的,总复杂度也就是 \(O(n^2)\) 的,显然会 tle。

注意到这是静态区间求和,所以考虑前缀和。令 \(S_i=\sum\limits_{j=0}^iA_j\),递推式变为

\[\large A_n=S_{n-1}+S_{n-3}
\]

这个 \(S\) 可以在转移的时候递推求出来,这样就是 \(O(n)\) 的了,可以通过。

注意到这个式子里面很多 \(A_i\) 被反复加了,分别令 \(n=k\) 和 \(n=k+1\),得:

\[\large\begin{aligned}A_k&=\sum_{i=0}^{k-1}A_i+\sum_{i=0}^{k-3}A_i\\&=A_{k-1}+A_{k-2}+2A_{k-3}+\sum_{i=0}^{k-4}A_i\end{aligned}
\]
\[\large\begin{aligned}A_{k-4}&=\sum_{i=0}^{k-2}A_i+\sum_{i=0}^{k-4}A_i\\&=A_{k-2}+A_{k-3}+2\sum_{i=0}^{k-4}A_i\end{aligned}
\]

减一下,得到 \(A_k-A_{k-1}=A_{k-1}+A_{k-3}\),即 \(A_k=2A_{k-1}+A_{k-3}\) .

用这个式子递推即可。

题解 P1999【覆盖墙壁】的更多相关文章

  1. 洛谷 P1990 覆盖墙壁

    P1990 覆盖墙壁 题目描述 你有一个长为N宽为2的墙壁,给你两种砖头:一个长2宽1,另一个是L型覆盖3个单元的砖头.如下图: 0 0 0 00 砖头可以旋转,两种砖头可以无限制提供.你的任务是计算 ...

  2. 题解 洛谷P1990 覆盖墙壁

    DP康复训练题 原题:洛谷P1990 核心:递推/DP 题源应该是铺地砖,所以采用一摸一样的思路,只是有两种不同的方块 我们先用最最简单的方式尝试一下枚举当最后一行被填满的情况: 1.如果我们只用第一 ...

  3. 【题解】覆盖问题 BZOJ1052 HAOI2007 二分

    题目描述 某 人在山上种了N棵小树苗.冬天来了,温度急速下降,小树苗脆弱得不堪一击,于是树主人想用一些塑料薄膜把这些小树遮盖起来,经过一番长久的思考,他决定用 3个LL的正方形塑料薄膜将小树遮起来.我 ...

  4. 贪心(qwq)习题题解

    贪心(qwq)习题题解 SCOI 题解 [ SCOI2016 美味 ] 假设已经确定了前i位,那么答案ans一定属于一个区间. 从高位往低位贪心,每次区间查找是否存在使此位答案为1的值. 比如6位数确 ...

  5. POJ3680:Intervals(离散化+最大流最小费用)

    Intervals Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 9320   Accepted: 4014 题目链接:ht ...

  6. 【JOI Camp 2015】IOIO卡片占卜——最短路

    题目 [题目描述]K 理事长是占卜好手,他精通各种形式的占卜.今天,他要用正面写着 `I` ,背面写着 `O` 的卡片占卜一下日本 IOI 国家队的选手选择情况.占卜的方法如下:1. 首先,选取五个正 ...

  7. Computer Vision_33_SIFT:PCA-SIFT A More Distinctive Representation for Local Image Descriptors——2004

    此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...

  8. Code[VS] 1022 覆盖 题解

    Code[VS] 1022 覆盖 题解  Hungary Algorithm 题目传送门:Code[VS] 1022 题目描述 Description 有一个N×M的单位方格中,其中有些方格是水塘,其 ...

  9. codevs3027线段覆盖2(DP)题解

    题目描述 Description 数轴上有n条线段,线段的两端都是整数坐标,坐标范围在0~1000000,每条线段有一个价值,请从n条线段中挑出若干条线段,使得这些线段两两不覆盖(端点可以重合)且线段 ...

随机推荐

  1. MySQL深入学习-day1

    书名<MySQL是怎样运行的:从根儿上理解MySQL>可自行百度 以下是知识点总结 重新认识Mysql MySQL是一个C/S架构的软件. 在Windows安装后首先注册成服务,然后会在开 ...

  2. python+pytest接口自动化(16)-接口自动化项目中日志的使用 (使用loguru模块)

    通过上篇文章日志管理模块loguru简介,我们已经知道了loguru日志记录模块的简单使用.在自动化测试项目中,一般都需要通过记录日志的方式来确定项目运行的状态及结果,以方便定位问题. 这篇文章我们使 ...

  3. 1.还不会部署高可用的kubernetes集群?看我手把手教你使用二进制部署v1.23.6的K8S集群实践(上)

    公众号关注「WeiyiGeek」 设为「特别关注」,每天带你玩转网络安全运维.应用开发.物联网IOT学习! 本章目录: 0x00 前言简述 0x01 环境准备 主机规划 软件版本 网络规划 0x02 ...

  4. Linux下将一个文件压缩分包成多个小文件

    压缩分包 将文件test分包压缩成10M 的文件: tar czf - test | split -b 10m - test.tar.gz 解压 将第一步分拆的多个包解压: cat test.tar. ...

  5. Unity实现”对象池管理器“

    前言:警告!这可能是坨屎,空闲时间写成,仅作娱乐 在Unity中生成或销毁一个物体会占用较大的资源,如果是制作FPS射击游戏,子弹生成更是雪上加霜.所以我自己写了一个PoolManager,不能和网上 ...

  6. 【AC自动机】背单词

    题意: 0 s v:添加价值为v的字符串s 1 t:查询t中含的s的权值和.(不停位置算多次) 思路: 在线AC自动机. 同学用过一个妙妙子的分块算法. 这里用二进制分组:通常用作把在线数据结构问题转 ...

  7. 世界排名前三的Linux桌面发行版

    linux操作系统 1.MX Linux 2.Manjaro 3. Linux Mint 1.MX Linux https://mxlinux.org 中文用户不太友好 2.Manjaro https ...

  8. 代码模板整理(0):先水一波a+b

    梦开始的地方 "Hello World!" #include<bits/stdc++.h> using namespace std; int main(){ cout& ...

  9. 一个支持数据绑定与数据联动的Dashboard

    什么是仪表盘 仪表盘是不同部件的组合,可以在一个页面集中显示各类信息,方便用户集中查看信息.并快速处理业务 关于制作部件,请参见:制作部件 CabloyJS仪表盘的特点 更灵活的自适应能力,可以针对m ...

  10. Makefile基础语法

    Makefile的作用 如果没有Makefile,每次修改源代码后,如果要重新编译代码,都要输入编译命令,当源代码很多时,效率很底下. 基本格式 target: componsnts TAB rule ...