码迷,mamicode.com
首页 > 其他好文 > 详细

bzoj2973石头游戏——矩阵乘法

时间:2018-05-17 00:56:20      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:operator   size   eof   i++   class   ons   cin   matrix   ace   

题目:权限题!

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

代码如下:

#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石头游戏——矩阵乘法

标签:operator   size   eof   i++   class   ons   cin   matrix   ace   

原文地址:https://www.cnblogs.com/Zinn/p/9048879.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!