[luogu5004]专心OI - 跳房子【矩阵加速+动态规划】
传送门:https://www.luogu.org/problemnew/show/P5004
分析
动态规划转移方程是这样的\(f[i]=\sum^{i-m-1}_{j=0}f[j]\)。
那么很明显的是要构造举证,而且要维护前缀和,所以需要保留\(m+1\)项。
ac代码
#include <bits/stdc++.h>
#define ll long long
#define ms(a, b) memset(a, b, sizeof(a))
#define inf 0x3f3f3f3f
#define N 25
#define mod ((int)1e9 + 7)
using namespace std;
template <typename T>
inline void read(T &x) {x = 0; T fl = 1;char ch = 0;while (ch < '0' || ch > '9') {if (ch == '-') fl = -1;ch = getchar();}while (ch >= '0' && ch <= '9') {x = (x << 1) + (x << 3) + (ch ^ 48);ch = getchar();}x *= fl;
}
ll n;
int m;
struct Matrix {int a[N][N], x, y;void init() {memset(a, 0, sizeof(a));x = y = 0;}Matrix operator *(const Matrix &rhs) const{Matrix res; res.init();res.x = x, res.y = rhs.y;int c = y;for (int i = 1; i <= x; i ++) {for (int j = 1; j <= y; j ++) {for (int k = 1; k <= c; k ++) {res.a[i][j] = (res.a[i][j] + (ll) a[i][k] * rhs.a[k][j]) % mod;}}}return res;}Matrix power(Matrix a, ll b) {Matrix res; res.init();res.x = res.y = a.x;for (int i = 1; i <= res.x; i ++) res.a[i][i] = 1;for (; b; b >>= 1) {if (b & 1) res = res * a;a = a * a;}return res;}
}a, b;
int main() {read(n); read(m);if (n <= m) {printf("%lld\n", n + 1);return 0;}a.x = a.y = m + 2, b.x = m + 2, b.y = 1;for (int i = 2; i <= m + 2; i ++) b.a[i][1] = 1;b.a[1][1] = m + 1;a.a[1][1] = a.a[1][2] = 1;a.a[2][2] = a.a[2][m + 2] = 1;for (int i = 3; i <= m + 2; i ++) a.a[i][i - 1] = 1;a = a.power(a, n - m);b = a * b;printf("%d\n", b.a[1][1]);return 0;
}
转载于:https://www.cnblogs.com/chhokmah/p/10568032.html
[luogu5004]专心OI - 跳房子【矩阵加速+动态规划】相关推荐
- 【LuoguP5004】 专心OI - 跳房子
首先这是一道计数类DP,那我们得先推式子,经过瞎掰乱凑,经过认真分析,我们可以得到这样的方程 F(N)=F(0)+F(1)+....+F(N-M-1) 所有F初值为1,F(1)=2 ANS=F(N+M ...
- ZZH与计数(矩阵加速,动态规划,记忆化搜索)
题面 因为出题人水平很高,所以这场比赛的题水平都很高. ZZH 喜欢计数. ZZH 有很多的数,经过统计,ZZH一共有 v0v_0v0 个 0 ,v1v_1v1 个 1,-,v2n−1v_{2^n ...
- [CQOI2018] 交错序列(矩阵加速优化dp)
problem luogu-P4456 solution 预处理阶乘和阶乘的逆元,枚举 111 出现次数 iii,∑(n−i+1i)(n−i)aib\sum\binom{n-i+1}{i}(n-i)^ ...
- 线性代数四之动态DP(广义矩阵加速)——Can you answer these queries III,保卫王国
动态DP--广义矩阵加速 SP1716 GSS3 - Can you answer these queries III description solution code [NOIP2018 提高组] ...
- 线性代数三之状压DP的矩阵加速——Quad Tiling,Bus公交线路
状压与矩阵加速的藕断丝连 Quad Tiling description solution code [Hnoi2010]Bus 公交线路 description solution code Quad ...
- 线性代数二之矩阵加速DP——数学作业,Arc of Dream
矩阵加速 数学作业 description solution code Arc of Dream description solution code 数学作业 description solution ...
- 【codevs2304】【BZOJ1875】HH去散步,第一次的矩阵加速DP
传送门1 传送门2 写在前面:今天冒傻气 思路:我第一眼没有看出来它是个矩阵乘法加速DP,只觉得如果这个t小点就直接广搜可以了,后来发现网上的题解无一例外都是矩阵快速幂的时候,我的表情 后来看了看黄学 ...
- 矩阵快速幂(矩阵加速)
//南昌理工ACM集训队 放心食用 矩阵加速 快速幂(前置技能) 矩阵快速幂 可乐 附个模板 最后小结 本人小白如有不对欢迎指正ლ(╹◡╹ლ) 矩阵加速 快速幂(前置技能) 对于普通的求a的b次方,一 ...
- 【AC自动机】【矩阵加速】BZOJ4861魔法咒语
分析: 巨恶心的一题双代码题. 对于前半部分,把禁止出现的字符串建一颗AC自动机. 然后枚举每个位置用了某个模板串后转移到哪里. 然后直接DP即可. 但是对于后半部分数据,则必须写一个矩阵加速... ...
最新文章
- android listview数据动态加载_Android | Tangram动态页面之路(六)数据分离
- SSM整合之XML方式,与配置事务,拦截器,异常处理,PageHelper分页插件整合
- BZOJ.4516.[SDOI2016]生成魔咒(后缀自动机 map)
- Codeforces 446C. DZY Loves Fibonacci Numbers【斐波那契+线段树】
- python查看继承方法(一分钟读懂)
- 编写高质量JavaScript代码绳之以法(The Essentials of Writing High Quality JavaScript)翻译...
- 笔记-配置博客园客户端代码高亮(2016.08.20)
- Codeforces Round #224 (Div. 2): C. Arithmetic Progression(模拟)
- html渐变编织背景,CSS hover背景/文字渐变效果
- Gentoo虚拟机安装教程
- 云夜卡社区源码v4.2 带总控
- The signing key‘s size is 1024 bits which is not secure enough for the RS256 algorithm.
- 在VIVADO上实现的非常简易的RISC-V CPU设计(来自《Verilog数字系统设计》夏宇闻著)
- 如何批量新建文件夹,批量新建文件夹并命名
- 《请停止无效的努力》读书笔记
- java毕业设计——基于Java+Java ME的无线网络移动端的俄罗斯方块游戏设计与实现(毕业论文+程序源码)——俄罗斯方块游戏
- 数据结构实践(有的数据结构课后习题答案),红色是答案
- 《量化炼金术-中低频量化交易策略研发》读书笔记-序言,引言
- c语言中找不到EXE,windows找不到文件c:\windows\system32\msdt.exe如何解决
- MySQL基础(四)运算符
热门文章
- 编程软件python下载怎么读-使用最方便的计算机编程软件,Python下载使用完美教程...
- 自学python的书籍逐级推荐-适合初学者和经验的十大最佳Python书籍-2018
- python新手教程 从零开始-让你从零开始学会写爬虫的5个教程(Python)
- python语言中文社区-python中用中文
- python基本语法语句-第二章 python基本语法元素
- 0基础学python难吗-0基础学武汉Python开发课程有多难?该怎么入门?
- python用中文怎么说-如何实现python设置中文界面?
- 想学python从哪里入手-想要学习python,如何入手学习?
- python处理excel表格实例-python2 对excel表格操作完整示例
- python中文读音ndarray-Python Numpy 控制台完全输出ndarray的实现