zoukankan      html  css  js  c++  java
  • bzoj4887: [Tjoi2017]可乐

    一眼暴力宽搜(最近比赛想暴力想疯了。。。

    很明显的矩乘,然后自爆可以看作走向向一个无出边的点

    然后没啥难的了吧。

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<cstdlib>
    #include<algorithm>
    #include<cmath>
    #include<queue>
    using namespace std;
    const int mod=2017;
    
    int n,m;
    struct Matrix
    {
        int mp[50][50];
        void clean(){memset(mp,0,sizeof(mp));}
        friend Matrix operator *(Matrix A,Matrix B)
        {
            Matrix C;C.clean();
            for(int i=1;i<=n+1;i++)
                for(int j=1;j<=n+1;j++)
                    for(int k=1;k<=n+1;k++)
                        C.mp[i][j]=(C.mp[i][j]+(A.mp[i][k]*B.mp[k][j])%mod)%mod;
            return C;
        }
    }A,ans;
    int main()
    {
        scanf("%d%d",&n,&m);
        A.clean();
        for(int i=1;i<=n;i++)A.mp[i][i]=1;
        for(int i=1;i<=n+1;i++)A.mp[i][n+1]=1;
        for(int i=1;i<=m;i++)
        {
            int x,y;
            scanf("%d%d",&x,&y);
            A.mp[x][y]=1;A.mp[y][x]=1;
        }
        
        ans.clean();ans.mp[1][1]=1;
        int p;
        scanf("%d",&p);
        while(p>0)
        {
            if(p%2==1)ans=ans*A;
            A=A*A;p/=2;
        }
        int sum=0;
        for(int i=1;i<=n+1;i++)
            for(int j=1;j<=n+1;j++)
                sum=(sum+ans.mp[i][j])%mod;
        printf("%d
    ",sum);
        return 0;
    }
  • 相关阅读:
    原型prototype
    this
    作用域、闭包、模块
    嵌入式面试资料
    一些嵌入式面试题目的集锦
    优先级反转
    struct和union的区别
    (转)typedef和#define的用法与区别
    const 和 #define区别
    白话经典算法系列之 快速排序 快速搞定
  • 原文地址:https://www.cnblogs.com/AKCqhzdy/p/8858294.html
Copyright © 2011-2022 走看看