[bzoj1002]: [FJOI2007]轮状病毒(矩阵树定理)

传送门
此题好像本来要用矩阵树定理(matrix-tree),可是好像可以推式子,推出来就是:

f(n)=3f(n1)f(n2)+2
f(1)=1,f(2)=5

然后套板子就过了.
代码:

/**************************************************************
    Problem: 1002
    User: stone41123
    Language: C++
    Result: Accepted
    Time:8 ms
    Memory:1396 kb
****************************************************************/

#include<string>
#include<iostream>
#include<iosfwd>
#include<cmath>
#include<cstring>
#include<stdlib.h>
#include<stdio.h>
#include<cstring>
#define MAX_L 255 //????,????
using namespace std;

/*
板子省略
*/

bign f[101];
int main()
{
    f[1]=1;
    f[2]=5;
    int n;
    scanf("%d",&n);
    for(int i=3;i<=n;i++){
        f[i]=f[i-1]*3-f[i-2]+2;
    }
    cout<<f[n];
    return 0;
}

posted @ 2017-09-21 10:05  玫葵之蝶  阅读(154)  评论(0编辑  收藏  举报