矩阵优化dp
鏈接:https://www.luogu.org/problemnew/show/P1939
題解:
矩陣優化dp模板題
搞清楚矩陣是怎么乘的構造一下矩陣就很簡單了
代碼:
#include <bits/stdc++.h> using namespace std; #define ll long long #define mo 1000000007 ll t,x; struct re{ll jz[5][5]; }a,c; re XX(re x,re y) {re tmp; memset(tmp.jz,0,sizeof(tmp.jz));for (ll i=1;i<=3;i++)for (ll j=1;j<=3;j++)for (ll k=1;k<=3;k++)tmp.jz[i][k]=(tmp.jz[i][k]+x.jz[i][j]*y.jz[j][k])%mo;return(tmp); } re fastpow(ll x) {if (x==1) return(a);re b=fastpow(x/2);b=XX(b,b);if (x%2==1) b=XX(b,a);return(b); } int main() {freopen("noip.in","r",stdin);freopen("noip.out","w",stdout);cin>>t;while (t--){memset(a.jz,0,sizeof(a.jz));a.jz[1][3]=1; a.jz[2][1]=1; a.jz[3][2]=1; a.jz[3][3]=1;cin>>x;if (x<=3) cout<<1<<endl;else{c=fastpow(x-3);cout<<(c.jz[1][3]+c.jz[2][3]+c.jz[3][3])%mo<<endl;}}return 0; }?
轉載于:https://www.cnblogs.com/yinwuxiao/p/8480606.html
總結
- 上一篇: f-GAN
- 下一篇: 【BZOJ 4555】[Tjoi2016