bzoj2973石头游戏——矩阵乘法

Posted Zinn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bzoj2973石头游戏——矩阵乘法相关的知识,希望对你有一定的参考价值。

题目:权限题!

写了一下,但提交不了,先放着吧。

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,num[10][10],ct,w[90],q,r,T;
char c[90][8];
struct Matrix{
    int a[90][90];
    Matrix operator * (const Matrix &y) const
    {
        Matrix x;
        memset(x.a,0,sizeof x.a);
        for(int i=1;i<=ct;i++)
            for(int k=1;k<=ct;k++)
                for(int j=1;j<=ct;j++)
                    x.a[i][j]+=a[i][k]*y.a[k][j];
        return x;
    }
}s[65],ans,ss,ss2;
void init()
{
    ans.a[1][0]=1;//ans使用第一行
    for(int t=1;t<=60;t++)
    {
        s[t].a[0][0]=1;//!
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
            {
                int k=num[i][j];
                char cc=c[k][w[k]];
                if(cc>=0&&cc<=9)s[t].a[0][k]=cc-0;
                if(cc==N&&i>1)s[t].a[k][num[i-1][j]]=1;
                if(cc==W&&j>1)s[t].a[k][num[i][j-1]]=1;
                if(cc==S&&i<n)s[t].a[k][num[i+1][j]]=1;
                if(cc==E&&j<m)s[t].a[k][num[i][j+1]]=1;
                if(w[k]==strlen(c[k])-1)w[k]=0;
                else w[k]++;
            }
    }
}
int main()
{
    scanf("%d%d%d",&n,&m,&T);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        {
            num[i][j]=++ct;
            cin>>c[ct];
        }
    init();
    q=T/60;r=T%60;
    if(q)
    {
        for(int i=0;i<=ct;i++)ss.a[i][i]=1;
        for(int i=1;i<=60;i++)
            ss=ss*s[i];
    }
    if(r)
    {
        for(int i=0;i<=ct;i++)ss2.a[i][i]=1;
        for(int i=1;i<=r;i++)
            ss2=ss2*s[i];
    }
    ans=ans*ss;
    ans=ans*ss2;
    int mx=0;
    for(int i=1;i<=ct;i++)
        mx=max(mx,ans.a[1][i]);
    printf("%d",mx);
    return 0;
}

 

以上是关于bzoj2973石头游戏——矩阵乘法的主要内容,如果未能解决你的问题,请参考以下文章

bzoj3240 && 洛谷P1397矩阵游戏[NOI2013](矩阵乘法+卡常)

BZOJ1444[Jsoi2009]有趣的游戏 AC自动机+概率DP+矩阵乘法

bzoj3240 Noi2013—矩阵游戏

bzoj 2875 [Noi2012]随机数生成器 矩阵乘法

BZOJ 2738 矩阵乘法(整体二分+二维树状数组)

bzoj 1875 [SDOI2009]HH去散步 矩阵乘法