zoukankan      html  css  js  c++  java
  • [Luogu P5678][GZOI2017]河神

    (GZOI2017D2T1)

    题目链接?不存在的Luogu P5678 [GZOI2017]河神

    题面

    往拆位想了半天,问了问yhj神仙发现这就一sb题。。

    虽然我也不会证明,但是这题直接矩阵乘法模拟就可以过了。。

    细节见代码。

    时间复杂度 (O(K^3log N))

    代码:

    #include <cstdio>
    #include <cstring>
    #define rint register int
    typedef unsigned long long ull;
    
    int N,K;
    struct Matrix
    {
        ull a[105][105];
        inline Matrix(){memset(a,0,sizeof a);}
    
        inline Matrix operator*(const Matrix &o)const
        {
            Matrix Res;
            for(rint i=0;i<K;++i)
                for(rint k=0;k<K;++k)
                    for(rint j=0;j<K;++j)
                        Res.a[i][j]|=a[i][k]&o.a[k][j];
            return Res;
        }
    
        inline Matrix operator^(int p)const
        {
            Matrix Res(*this),Pow(*this);
            for(--p;p;p>>=1,Pow=Pow*Pow)if(p&1)Res=Res*Pow;
            return Res;
        }
    }A,B;
    
    int main()
    {
        scanf("%d%d",&N,&K);
        for(int i=0;i<K;++i)scanf("%llu",&A.a[0][i]);
        for(int i=1;i<K;++i)B.a[i][i-1]=~0ull;
        for(int i=0;i<K;++i)scanf("%llu",&B.a[i][K-1]);
        printf("%llu
    ",(A*(B^N)).a[0][0]);
        return 0;
    }
    
  • 相关阅读:
    Vue 组件的基础介绍
    Java web中的路径问题
    个人网站的使用路线
    EL表达式
    jsp
    状态管理和作用域对象
    servlet
    jsp session获取问题
    关于jsp页面中接收二维数组
    个人网站开发(二)
  • 原文地址:https://www.cnblogs.com/LanrTabe/p/11908178.html
Copyright © 2011-2022 走看看