51Nod演算法馬拉松18 B 非010串

2021-07-23 03:29:16 字數 901 閱讀 8708

如果乙個01字串滿足不存在010這樣的子串,那麼稱它為非010串。

求長度為n的非010串的個數。(對1e9+7取模)

最喜歡簽到題了。 設f

[i][

j]表示到第i個點,末尾的狀態是j(01,00,10,11四個狀態),轉移很顯然。

然後在轉成矩陣乘法就好了。

#include

#include

#include

#include

#include

#define fo(i,a,b) for(i=a;i<=b;i++)

using

namespace

std;

const

int mo=1000000007;

typedef

long

long ll;

ll i,j,k,l,t,n,m;

ll ans;

typedef

long

long ll;

struct ju}}

return c;

}}a,b;

ju qsm(ju x,ll y)

return z;

}int main()

a.a[0][0]=a.a[0][1]=1;

a.a[1][3]=1;

a.a[2][0]=a.a[2][1]=1;

a.a[3][2]=a.a[3][3]=1;

b.a[0][0]=b.a[0][1]=b.a[0][2]=b.a[0][3]=1;

b=b*qsm(a,n-2);

fo(i,0,3)(ans+=b.a[0][i])%=mo;

printf("%lld\n",ans);

}

演算法馬拉松18 B 非010串

acm模版 這道題一開始一看,覺得是dp,後來發現資料太大,dp要死人的,於是想到了矩陣快速冪,在網上看到有人說可以dp,不懂他是怎麼做的,但是感覺一定會超時啊 這裡首先我們需要找到遞推式 01 an 10 bn 00 cn 11 dn 由此可以推出 an 1 bn cn bn 1 dn 因為需要排...

51nod 演算法馬拉松18 總結

第一次打馬拉松。a 一看題。什麼鬼。n 4竟然是無解,第乙個點給了乙個n 5的,好像是構造的挺有規律的樣子。那就偶數無解,奇數照著他的構造方法寫一發吧。怎麼a了?不管了。既然結束了還是要回來好好想一下是什麼情況的。偶數肯定是無解的,因為一共有n n 1 2 條邊,那麼每種顏色的邊出現次數相等的話,就...

51nod演算法馬拉松18總結

第一次打算法馬拉松。第乙個晚上後就有人ak實在把我嚇了一跳,後來十多個人ak了,幾乎想要放棄的感覺。a 構造題,首先可以證明n為偶數時是無解的。然後我在n為奇數的構造上花了點時間,後來觀察n 5時的答案發現構造方法如下 列舉i,然後給所有邊 i,j i j 按順序染色。首先i 1,那麼連出去的邊分別...