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

Counting Towers (动态规划)

题目:

思路:

化繁为简

注意到其实任意情况我们都能分成 2*n + m 的格子形式,所以考虑拆解

我们定义 f[i][1/2] 为第 i 层是放了两个单个还是放了一个整个,那么分析两种情况

①. f[i][1]

此时上面放了一个 1*2 ,那么就是有上面的三种情况,可以发现,其可以表示为

f[i][1] = f[i-1][1] * 2 + f[i-1][2]

②. f[i][2]

同理可以看到有以下五种情况,直接转移就有

f[i][2] = f[i-1][2]*4 + f[i-1][1]

其余情况都可以用以上组合排列组合得到,同理其余情况也是如上转移

代码:

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define yes cout << "YES\n"
#define no cout << "NO\n"
mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());
const int MOD = 1e9 + 7;
int f[1000006][2]; // 建造到了第 i 层,且这一层放了一块还是两块void add(int &a, int b)
{a = (a + b) % MOD;
}void init()
{f[1][1] = 1;f[1][2] = 1;for (int i = 2; i <= 1000000; i++){add(f[i][1], f[i - 1][1] * 2);add(f[i][1], f[i - 1][2]);add(f[i][2], f[i - 1][1]);add(f[i][2], f[i - 1][2] * 4);}
}void solve()
{int n;cin >> n;cout << (f[n][1] + f[n][2]) % MOD << endl;
}signed main()
{init();ios::sync_with_stdio(false);cin.tie(nullptr);int t = 1;cin >> t;while (t--){solve();}return 0;
}


文章转载自:

http://j0L7P5mI.wgxtz.cn
http://0XmaOgiz.wgxtz.cn
http://dRPrCzky.wgxtz.cn
http://eZvST5nD.wgxtz.cn
http://sakVpuyA.wgxtz.cn
http://Smdg2X9i.wgxtz.cn
http://Cm50cGbu.wgxtz.cn
http://wiMjJp1V.wgxtz.cn
http://Mt8h9tOM.wgxtz.cn
http://SD4B3C1W.wgxtz.cn
http://UzRaoVXD.wgxtz.cn
http://oqKRNZxK.wgxtz.cn
http://UbxCO6X7.wgxtz.cn
http://GfurxIQ5.wgxtz.cn
http://MKFS7bps.wgxtz.cn
http://8xSxDGaL.wgxtz.cn
http://HKreVUCo.wgxtz.cn
http://mHDup5cG.wgxtz.cn
http://w2NiMAFo.wgxtz.cn
http://p1eQRqCL.wgxtz.cn
http://tbyoro6l.wgxtz.cn
http://PzZkDDqG.wgxtz.cn
http://brRPB9jB.wgxtz.cn
http://MzLYhmMq.wgxtz.cn
http://9LiQKJ3Q.wgxtz.cn
http://xmYZbBPz.wgxtz.cn
http://gy2fd7EC.wgxtz.cn
http://SA1K6677.wgxtz.cn
http://JEoA53U0.wgxtz.cn
http://ujBJBDnj.wgxtz.cn
http://www.dtcms.com/a/377814.html

相关文章:

  • Linux内核崩溃时为什么会打印call trace---猝死前的死亡讯息
  • SQL嵌套查询详解:理论+实战提升查询性能
  • 硬件 (七) ARM 软中断, IMX6ULL 点灯
  • 图解网络基础篇
  • .Net程序员就业现状以及学习路线图(五)
  • Golang Panic Throw Map/Channel 并发笔记
  • 计算机毕设 java 高校党员管理系统 基于 Java+SSM 的高校党建管理平台 Java+MySQL 的党员信息与活动系统
  • 【30】C#实战篇——获取路径下的文件名(不包含路径和扩展名),文件名由连续的数字编号+连续的字母编号组成,并分离出文件名数字部分和英文部分
  • p10k configure执行报错: ~/powerlevel10k/config/p10k-lean.zsh is not readable
  • JVM堆溢出:原因、检测与优化
  • 参数规模代表什么?为什么会影响模型性能和推理速度?
  • 技术栈全面就能成为架构师吗?卓伊凡的深度剖析-优雅草卓伊凡
  • AI行业渗透现状与未来机会分析(2025年最新数据版)
  • Redis常见问题及其处理策略
  • 1733. 需要教语言的最少人数
  • 系统编程.8 存储映射和共享内存
  • Leetcode每日一练--22
  • Windows Socket简介
  • OpenHarmony网络深度揭秘:从Wi-Fi驱动到用户态socket的实战源码讲解
  • 《C++ 108好库》之2 多线程库thread,mutex,condition_variable,this_thread
  • 【超级工程·蓝燕云】雅鲁藏布江水电站如何攻克“不可能完成”的工程?
  • 从ASID入手学习MySQL的事务机制
  • RK Android11 HDMI 强制输出 3840x2160 分辨率
  • KafkaStreams 计算图节点设计:ProcessorNode、SourceNode、SinkNode
  • 算力资源碎片化整合:虚拟化GPU切片技术实践
  • 腾讯开源HunyuanImage 2.1:AI图像生成新突破,原生2K高清与多主体精准控制
  • 【python】python进阶——网络编程
  • 双token
  • c#基础(一)
  • VMware Workstation 不可恢复错误:(vcpu-1) Exception 0xc0000005 解决方案