武大校赛 26. Lost in WHU(矩阵快速幂)

来源:互联网 发布:双十一网络销售情况 编辑:程序博客网 时间:2024/05/17 22:20

题意:

给出n个点,m条边,问t步内从1到达n的方案数。


解题思路:

这题的做法在离散课本上有介绍, 邻接矩阵A的l次的第i行第j列数表示i到j的长度为l的路的条数,应该是一道经典题了吧。

知道这个就好做了,不过还要做一点做处理,因为这题求的是t步内的方案数。

求t步呢的方案数,那么在t步之前就到达n点的方案应该让点不再变化,所以我们需要可以把所有从n出去的边删去,再连上一条n到n的边,这样形成一个自环,一个点到达n后就不断的在走这个环,我们就能把t步之前的方案都给保留下来了。


还有一种做法就是矩阵求和,将A的1次,A的2次, A的3次...到A的t次的加和求出来,t有点大,可以构造一个求和的矩阵来求


最后A[1][n]就是答案了


另外别忘了开long long .虽然是1e9+7以内的数,但是两个数相乘还是溢出


代码:

#include <bits/stdc++.h>using namespace std;const int mod=1e9+7;struct edg{    long long  a[103][103];}r;int n, m;edg rec_muli(edg a, edg b){    edg res;        int i, j, k;    for(i=1; i<=n; i++)for(j=1; j<=i; j++)res.a[i][j]=res.a[j][i]=0;    for(i=1; i<=n; i++)    {        for(j=1; j<=n; j++)        {            for(k=1; k<=n; k++)            {               res.a[i][k]=(res.a[i][k]+(a.a[i][j]*b.a[j][k])%mod)%mod;             }        }    }    for(i=1; i<=n; i++)for(j=1; j<=n; j++)res.a[i][j]%=mod;    return res;}long long  quick_mod(edg a, int m){    edg res;    res=a;    while(m>0)    {        if(m&1)res=rec_muli(res, a);        m>>=1;        a=rec_muli(a,a);    }    /*    for(int i=1; i<=n; i++)    {        for(int j=1; j<=n; j++)printf("%d ", res.a[i][j]);        printf("\n");    }    */    return res.a[1][n]%mod;}int main(){    cin>>n>>m;    int x, y, i, j;    for(i=1; i<=n; i++)for(j=1; j<=n; j++)r.a[i][j]=0;    for(i=0; i<m; i++)    {        scanf("%d%d", &x, &y);        r.a[x][y]=1;        r.a[y][x]=1;    }    int t;    cin>>t;    for(i=0; i<n; i++)r.a[n][i]=0;    r.a[n][n]=1;    long long   ans=quick_mod(r, t-1);    printf("%lld\n", ans);}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 幼儿爱打人老师怎么办 一岁多宝宝太皮怎么办 小孩会有多动症怎么办 我小孩有多动症怎么办 家有多动症孩子怎么办 4岁宝宝多动症怎么办 四岁宝宝多动症怎么办 一岁宝宝多动症怎么办 5岁宝宝多动症怎么办 7岁宝宝多动症怎么办 小宝宝太调皮了怎么办 3岁宝宝好动怎么办 四岁宝宝好动怎么办 好动的孩子应该怎么办 孩子上课总发呆怎么办 小孩上课发呆走神怎么办 宝宝幼儿园坐不住怎么办 孩孑上课听不懂怎么办 25岁儿子不听话怎么办 幼儿午睡爱说话怎么办 幼儿园实习很累怎么办 怀孕后脚气严重怎么办 拼音a不会写怎么办 儿童7岁还坐不住怎么办 孩子缺锌手蜕皮裂开怎么办 宝宝读幼儿园哭怎么办 幼儿上课爱讲话怎么办 孩子上课总是乱跑怎么办 孩子听不懂老师讲课怎么办 高一上课听不懂怎么办 上课学生纪律差怎么办 一年级学生认字少怎么办 孩子上课做不住怎么办 幼儿园小孩上课乱跑怎么办 孩子挑食不爱吃饭怎么办 幼儿园孩子不听指令怎么办 1岁宝宝多动症怎么办 3岁宝宝胆小怎么办 爱挑食的孩子怎么办 小孩上课经常发呆怎么办 小孩不爱吃饭挑食怎么办