动态dp
动态dp,简称DDP,就是可修的动态规划,一般用矩阵优化
1. 前置知识:
一下默认会矩阵乘法。
矩阵维护递推,举个例子:
斐波那契数列:
我们可以根据造转移矩阵的方法递推。
且矩阵满足分配律,(注意不满足交换律),我们设转移矩阵为
I P1939 矩阵加速(数列)
模版,只需建出转移矩阵
跑矩阵快速幂即可。
点击查看代码
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const ll mod = 1e9+7;
ll t,n;
struct Matrix{
ll a[4][4],n,m;
void clear(){n = m = 0;memset(a,0,sizeof a);}
Matrix operator * (Matrix x){
Matrix y;y.clear();y.n = n,y.m = m;
for(int i = 1;i <= n;i++)
for(int j = 1;j <= m;j++)
for(int k = 1;k <= m;k++)y.a[i][j] = (y.a[i][j] + a[i][k] * x.a[k][j]) % mod;
return y;
}
}C,st,f,s;
int main(){
scanf("%d",&t);
st.n = 1,st.m = 3;
st.a[1][1] = st.a[1][2] = st.a[1][3] = 1;
C.n = C.m = 3;
C.a[1][1] = 1,C.a[3][1] = 1,C.a[1][2] = 1,C.a[2][3] = 1;
while(t--){
scanf("%lld",&n);
if(n <= 3)printf("1\n");
else{
n -= 3;
f = st,s = C;
while(n){
if(n & 1)f = f * s;
s = s * s;
n >>= 1;
}
printf("%lld\n",f.a[1][1]);
}
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现