日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【BZOJ4417】: [Shoi2013]超级跳马

發(fā)布時(shí)間:2024/4/15 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【BZOJ4417】: [Shoi2013]超级跳马 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目鏈接:

  傳送。

題解:

  矩陣快速冪優(yōu)化DP。

  先考慮$nm^2$DP,設(shè)$f_{(i,j)}$表示從$1,1$到$i,j$的方案,顯然這個(gè)方程和奇偶性有關(guān),我們考慮某列的$i$同奇偶性的轉(zhuǎn)移和奇偶性相異的貢獻(xiàn),很容易把剛才的方程變成$nm$的輪換式方程,即$f_{(0/1,j)}$表示偶/奇數(shù)列第$j$行的方案數(shù)。此時(shí)轉(zhuǎn)移方程為$$f_{(i,j)}=f_{(i,j)}+\sum_{x=-1}^{1}f_{(i(xor)1,j+x)}$$

  然后考慮如何用矩陣優(yōu)化,畫(huà)圖發(fā)現(xiàn)十字相乘時(shí),如果我們把奇偶分成兩列會(huì)沒(méi)辦法轉(zhuǎn)移,然后考慮十字相乘性質(zhì),我們可以把奇偶兩列轉(zhuǎn)換為一列上的兩段,這樣我們構(gòu)建$(2n)^2$的矩陣,至于遞推矩陣,YY一下即可。

代碼:

  

#define Troy 10/24/2017#include <bits/stdc++.h>using namespace std;inline int read(){int s=0,k=1;char ch=getchar();while(ch<'0'|ch>'9') ch=='-'?k=-1:0,ch=getchar();while(ch>47&ch<='9') s=s*10+(ch^48),ch=getchar();return s*k; }const int mod=30011;int n,m;struct Matrix{int a[101][101];Matrix(){memset(a,0,sizeof(a));}inline void e1(){for(int i=1;i<=2*n;i++)a[i][i]=1;}inline friend Matrix operator *(Matrix x,Matrix y){Matrix z;for(int i=1;i<=2*n;i++)for(int j=1;j<=2*n;j++)for(int k=1;k<=2*n;k++) z.a[i][j]=(z.a[i][j]+x.a[i][k]*1ll*y.a[k][j])%mod;return z;}inline friend Matrix operator ^(Matrix a,long long b){Matrix ret;ret.e1();while(b){if(b&1) ret=ret*a;a=a*a;b>>=1;}return ret;} };int main(){n=read(),m=read();if(m==1){puts(n==1?"1":"0");return 0;}Matrix ans;ans.a[1+n][1]=1;if(n>1)ans.a[2+n][1]=1;Matrix t;for(int i=1;i<=n;i++){t.a[i][i+n]=1;t.a[i+n][i]=1;t.a[i+n][i+n]=1;if(i-1)t.a[i+n][i+n-1]=1;if(i+1<=n)t.a[i+n][i+n+1]=1;}ans=(t^(m-2))*ans;printf("%d",ans.a[2*n][1]); }

?

轉(zhuǎn)載于:https://www.cnblogs.com/Troywar/p/7724937.html

總結(jié)

以上是生活随笔為你收集整理的【BZOJ4417】: [Shoi2013]超级跳马的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。