如果乙個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,那麼連出去的邊分別...