• 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;
    }
  • 相关阅读:
    微信小程序从零开始开发步骤(三)
    微信小程序从零开始开发步骤(三)底部导航栏
    微信小程序从零开始开发步骤(二)
    微信小程序从零开始开发步骤(二)
    微信小程序从零开始开发步骤(一)
    [NOIP2016]组合数问题
    5.20 考试 20 未完
    lca 例题 WK
    rmq RMQ
    BZ
  • 原文地址:https://www.cnblogs.com/Zinn/p/9048879.html
Copyright © 2020-2023  润新知