zoukankan      html  css  js  c++  java
  • HDU 2065 "红色病毒"问题

    http://acm.hdu.edu.cn/showproblem.php?pid=2065

    dp

    转移方程:dp[i][1]=2*dp[i-1][1]+dp[i-1][2]+dp[i-1][3];
                  dp[i][2]=dp[i-1][1]+2*dp[i-1][2]+dp[i-1][4];
                  dp[i][3]=dp[i-1][1]+2*dp[i-1][3]+dp[i-1][4];
                  dp[i][4]=dp[i-1][2]+dp[i-1][3]+2*dp[i-1][4];

    n太大,直接推会tle,用矩阵+快速幂秒杀

    View Code
    #include <iostream>
    using namespace std ;
    typedef __int64 LL ;
    void mul(int a[4][4],int b[4][4])
    {
        int c[4][4] ;
        int i,j,k ;
        for(i=0;i<4;i++)
            for(j=0;j<4;j++)
                c[i][j]=0 ;
        for(i=0;i<4;i++)
            for(j=0;j<4;j++)
                for(k=0;k<4;k++)
                    c[i][j]=(c[i][j]+a[i][k]*b[k][j])%100 ;
        for(i=0;i<4;i++)
            for(j=0;j<4;j++)
                a[i][j]=c[i][j] ;
    }
    void qpow(int m[4][4],LL n)
    {
        int ans[4][4]={1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1} ;
        int buff[4][4] ;
        int i,j ;
        for(i=0;i<4;i++)
            for(j=0;j<4;j++)
                buff[i][j]=m[i][j] ;
        while(n)
        {
            if(n&1)
                mul(ans,buff) ;
            mul(buff,buff) ;
            n>>=1 ;
        }
        for(i=0;i<4;i++)
            for(j=0;j<4;j++)
                m[i][j]=ans[i][j] ;
    }
    int main()
    {
        int t ;
        int m[4][4] ;
        while(scanf("%d",&t),t)
        {
            for(int cas=1;cas<=t;cas++)
            {
                LL n ;
                scanf("%I64d",&n) ;
                m[0][0]=2,m[0][1]=1,m[0][2]=1,m[0][3]=0,
                m[1][0]=1,m[1][1]=2,m[1][2]=0,m[1][3]=1,
                m[2][0]=1,m[2][1]=0,m[2][2]=2,m[2][3]=1,
                m[3][0]=0,m[3][1]=1,m[3][2]=1,m[3][3]=2 ;
                qpow(m,n) ;
                printf("Case %d: %d\n",cas,m[0][0]) ;
            }
            putchar('\n') ;
        }
        return 0 ;
    }
  • 相关阅读:
    [洛谷P4513][题解]小白逛公园
    [洛谷P2564][题解][SCOI2009]生日礼物
    [洛谷P3384][题解]轻重链剖分
    [洛谷P2607][题解][ZJOI2008]骑士
    第一次个人编程作业
    第一次博客作业
    第一次个人编程作业
    第一次博客作业
    1.初识数据库系统
    1.计算机发展历程
  • 原文地址:https://www.cnblogs.com/xiaohongmao/p/2624742.html
Copyright © 2011-2022 走看看