BZOJ2510: 弱题(循环矩阵+矩阵快速幂)

原创 2017年11月14日 20:03:29

传送门

大神题解

循环矩阵相乘还是循环矩阵,所以每次乘法求第一行就行了,时间复杂度O(n2logK)

(代码XJB写的。)

#include<bits/stdc++.h>
using namespace std;
inline int read(){
    char ch=getchar();int i=0,f=1;
    while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
    while(isdigit(ch)){i=(i<<1)+(i<<3)+ch-'0';ch=getchar();}
    return i*f;
} 
const int Maxn=1e3+50; 
int n,m,t;
double e[Maxn][Maxn],c[Maxn][Maxn],(*now)[Maxn]=e,(*now2)[Maxn]=c,rest[Maxn][Maxn],res2t[Maxn][Maxn],(*nowres)[Maxn]=rest,(*nowres2)[Maxn]=res2t;
double a[Maxn];
inline void mul(){
    for(int i=1;i<=n;i++){
        double res=0.0;
        for(int k=1;k<=n;k++)
        res+=now[1][k]*now[k][i];
        now2[1][i]=res;
    }
    for(int j=2;j<=n;j++)
        for(int k=1;k<=n;k++)
            now2[j][k]=now2[j-1][(k-1)?(k-1):n];
    swap(now,now2); 
}
inline void mul2(){
    for(int i=1;i<=n;i++){
        double res=0.0;
        for(int k=1;k<=n;k++)
        res+=nowres[1][k]*now[k][i];
        nowres2[1][i]=res;
    }
    for(int j=2;j<=n;j++)
        for(int k=1;k<=n;k++)
            nowres2[j][k]=nowres2[j-1][(k-1)?(k-1):n];
    swap(nowres,nowres2); 
}
int main(){
    n=read();m=read();t=read();
    for(int i=1;i<=n;i++)
        now[i][i]=-1.0/m+1.0,now[(i-1?i-1:n)][i]=1.0/m,nowres[i][i]=1.0;
    for(;t;t>>=1,mul()){
        if(t&1)mul2();
    }
    for(int i=1;i<=n;i++)a[i]=read();
    for(int i=1;i<=n;i++){
        double ans=0;
        for(int j=1;j<=n;j++){
            ans+=a[j]*nowres[j][i];
        }
        printf("%.3f\n",ans);
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

循环矩阵的快速幂(bzoj 2510: 弱题)

题名可以。。 先考虑概率dp:dp[x][y]表示第x个回合后,标号为y的小球的期望个个数,那么有 直接转移的话,复杂度是O(nk)的,肯定会超时,不过还好这个递推式显然能转化成矩阵 假设n只有4...

BZOJ 2510 弱题 概率 矩阵乘法 循环矩阵

%%% http://hzwer.com/3392.html %%% http://blog.csdn.net/u012288458/article/details/46779357#include...

BZOJ 2553 AC自动机+矩阵快速幂 (神题)

思路: 我们先对所有读进来的T建一个AC自动机 因为走到一个禁忌串就需要回到根 所以呢 搞出来所有的结束点 或一下 fail指针指向的那个点然后我们就想转移 a[i][j]表示从i节点转...

17.7.3小结、【矩阵快速幂】2017武大校赛I题:A simple math problem即nyoj2333、 bzoj2326

17.7.3暑假集训小结: 今天早上踩着8点进来了,昨天刚从家里到学校,先收拾了一下电脑到九点半; 从今天开始的计划是上学期考试的时候没刷的题目刷一下,到7.5; 一上午也没有做出这道题目,一直在...

解题报告:FZU1692 Key problem 循环矩阵快速幂

Problem 1692 Key problem Accept: 196    Submit: 862 Time Limit: 1000 mSec    Memory Limit : 327...

[bzoj 1009] [HNOI2008]GT考试:DP,单串AC自动机,矩阵快速幂

题意:给一个长为M(M<=20)的十进制数字串,求有多少个长为N(N<=10^9)的十进制数字串不包含它,结果对K(K<=10^3)取模。 在黄学长博客的KMP分类中找到这题。并没产生什么好思路……准...

【BZOJ4688】One-Dimensional(矩阵快速幂)

Description考虑一个含有 N 个细胞的一维细胞自动机。细胞从 0 到 N-1 标号。每个细胞有一个被表示成一个小于 M 的非负整数的状态。细胞的状态会在每个整数时刻发生骤变。我们定义 S(i...

bzoj 1297: [SCOI2009]迷路(矩阵快速幂)

1297: [SCOI2009]迷路 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1322  Solved: 938 [Submit][Statu...

[省选前题目整理][BZOJ 1297]迷路(矩阵快速幂)

题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=1297思路比较简单的一个矩阵快速幂的题。。。。 把每个点拆成9个点,分别代表时间1~9的状态...

[BZOJ 2004][HNOI 2010]Bus 公交线路(矩阵快速幂加速DP)

题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=2004思路用f[i][S]表示最快的公交车到了第i个公交车站,当前所有站台是否停靠公交车的状态...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)