当前位置: 首页 > news >正文

P8784 [蓝桥杯 2022 省 B] 积木画

P8784 [蓝桥杯 2022 省 B] 积木画 - 洛谷

题目描述

小明最近迷上了积木画,有这么两种类型的积木,分别为 I 型(大小为 2 个单位面积) 和 L 型 (大小为 3 个单位面积):

I 型积木

同时,小明有一块面积大小为 2×N 的画布,画布由 2×N 个 1×1 区域构成。小明需要用以上两种积木将画布拼满,他想知道总共有多少种不同的方式? 积木可以任意旋转,且画布的方向固定。

输入格式

输入一个整数 N,表示画布大小。

输出格式

输出一个整数表示答案。由于答案可能很大,所以输出其对 1000000007(即 109+7)取模后的值。

输入输出样例

输入 #1复制

3

输出 #1复制

5

说明/提示

【样例说明】

五种情况如下图所示, 颜色只是为了标识不同的积木: 

【评测用例规模与约定】

对于所有测试用例,1≤N≤1e7。

蓝桥杯 2022 省赛 B 组 G 题。

思路:


代码:
 

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N = 10000000 + 10, mod = 1e9 + 7;
ll dp[N][3]; 
// dp[i][0] 表示第i列只有第一行凸 
// dp[i][1] 表示第i列只有第二行凸 
// dp[i][2] 表示第i列两行都凸 
int main()
{dp[0][2] = 1;dp[1][2] = 1; // 第一列只有一种放法,竖着放ll n;cin >> n;for(ll i = 2; i <= n; ++i){dp[i][0] = (dp[i - 1][1] + dp[i - 2][2]) % mod;dp[i][1] = (dp[i - 1][0] + dp[i - 2][2]) % mod;dp[i][2] = (dp[i - 1][2] + dp[i - 1][0] + dp[i - 1][1] + dp[i - 2][2]) % mod;}cout << dp[n][2];return 0;
}

相关文章:

  • 关于阿里云-云消息队列MQTT的连接和使用,以及SpringBoot的集成使用
  • Docker 下备份 Mariadb 数据库文件
  • 进程和线程的相关命令
  • git checkout 详解
  • 内接圆和外接矩形
  • 1.2、SDH的复用结构
  • Amazon Linux 2023 配置定时任务完全指南:cronie安装与使用
  • SpringBoot的Web应用开发——Web缓存利器Redis的应用!
  • 半导体标准协议 E94 ControlJob学习
  • 目前流行Agent框架对比表
  • 手搓一个记录复制记录的软件,方便快速找到之前复制内容
  • 【教程】Windows安全中心扫描设置排除文件
  • 「从实验室到工程现场:机器学习赋能智能水泥基复合材料研发全流程解析」
  • HarmonyOS5 运动健康app(三):健康睡眠(附代码)
  • springboot项目中整合高德地图
  • Java中extends与implements深度解析:继承与接口实现的本质区别
  • SpringBoot 日志管理
  • 什么是探索式测试,应该怎么做?
  • 视觉语言模型的“视而不见“
  • 初认Flask框架
  • 专业网站建站/电商培训基地
  • 织梦网站地图生成/网站关键词搜索排名
  • 导航网站优化/重庆网络推广公司
  • 长春网站建设开发维护/网络营销的收获与体会
  • 印记室内设计网站/站长工具 站长之家
  • 做网站要提供营业执照吗/中南建设集团有限公司