题面

题解

如果给我们的是一个邻接矩阵,那么直接给邻接矩阵\(T\)次幂即可。

这里的图有边权,那么我们就将它拆成\(9\)个点即可。

代码

#include<cstdio>
#include<cstring>
#include<algorithm>
#define RG register
#define file(x) freopen(#x".in", "r", stdin);freopen(#x".out", "w", stdout); inline int read()
{
int data = 0, w = 1;
char ch = getchar();
while(ch != '-' && (ch < '0' || ch > '9')) ch = getchar();
if(ch == '-') w = -1, ch = getchar();
while(ch >= '0' && ch <= '9') data = data * 10 + (ch ^ 48), ch = getchar();
return data * w;
} inline int read_char()
{
char ch = getchar();
while(ch < '0' || ch > '9') ch = getchar();
return (ch ^ 48);
} const int maxn(110), Mod(2009); int n, T;
inline int Num(const int &x, const int &y) { return x + y * n; } struct Matrix
{
int a[maxn][maxn], n;
Matrix(int n = 0) : n(n) { memset(a, 0, sizeof(a)); } inline int *operator [] (const int &id) { return a[id]; }
inline Matrix operator * (const Matrix &b)
{
Matrix c(n);
for(RG int i = 1; i <= n; i++)
for(RG int j = 1; j <= n; j++)
for(RG int k = 1; k <= n; k++)
c[i][k] = (c[i][k] + a[i][j] * b.a[j][k]) % Mod;
return c;
}
}; int main()
{
n = read(); T = read();
Matrix S(n * 9), A(n * 9);
for(RG int i = 1; i <= n; i++)
{
for(RG int j = 1; j < 9; j++)
S[Num(i, j)][Num(i, j - 1)] = 1;
for(RG int j = 1, x; j <= n; j++)
if((x = read_char())) S[i][Num(j, x - 1)] = 1;
} for(RG int i = 1; i <= A.n; i++) A[i][i] = 1;
while(T) { if(T & 1) A = A * S; S = S * S, T >>= 1; }
printf("%d\n", A[1][n]);
return 0;
}

【SCOI2009】迷路的更多相关文章

  1. BZOJ 1297: [SCOI2009]迷路( dp + 矩阵快速幂 )

    递推式很明显...但是要做矩阵乘法就得拆点..我一开始很脑残地对于每一条权值v>1的边都新建v-1个节点去转移...然后就TLE了...把每个点拆成9个就可以了...时间复杂度O((9N)^3* ...

  2. 1297: [SCOI2009]迷路

    1297: [SCOI2009]迷路 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 652  Solved: 442[Submit][Status] ...

  3. 【矩阵快速幂】bzoj1297 [SCOI2009]迷路

    1297: [SCOI2009]迷路 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1407  Solved: 1007[Submit][Status ...

  4. [BZOJ 1297][SCOI2009]迷路

    1297: [SCOI2009]迷路 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1418  Solved: 1017[Submit][Status ...

  5. B20J_1297_[SCOI2009]迷路_矩阵乘法

    B20J_1297_[SCOI2009]迷路_矩阵乘法 题意:有向图 N 个节点,从节点 0 出发,必须恰好在 T 时刻到达节点 N-1.总共有多少种不同的路径? 2 <= N <= 10 ...

  6. 【BZOJ1297】[SCOI2009]迷路(矩阵快速幂)

    [BZOJ1297][SCOI2009]迷路(矩阵快速幂) 题面 BZOJ 洛谷 题解 因为边权最大为\(9\),所以记录往前记录\(9\)个单位时间前的.到达每个点的方案数就好了,那么矩阵大小就是\ ...

  7. bzoj1297 / P4159 [SCOI2009]迷路

    P4159 [SCOI2009]迷路 如果边权只有 0/1 那么不就是一个灰常简单的矩阵快速幂吗! 然鹅边权 $<=9$ 所以我们把每个点拆成9个点! 解决~ #include<iostr ...

  8. [Bzoj1297][Scoi2009 ]迷路 (矩阵乘法 + 拆点)

    1297: [SCOI2009]迷路 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1385  Solved: 993[Submit][Status] ...

  9. BZOJ1297: [SCOI2009]迷路 矩阵快速幂

    Description windy在有向图中迷路了. 该有向图有 N 个节点,windy从节点 0 出发,他必须恰好在 T 时刻到达节点 N-1. 现在给出该有向图,你能告诉windy总共有多少种不同 ...

  10. 1297. [SCOI2009]迷路【矩阵乘法】

    Description windy在有向图中迷路了. 该有向图有 N 个节点,windy从节点 0 出发,他必须恰好在 T 时刻到达节点 N-1. 现在给出该有向图,你能告诉windy总共有多少种不同 ...

随机推荐

  1. canvas学习笔记1

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  2. c++ 派生类的复制函数次序,及子父类兼容性

    #include <iostream> using namespace std; class CFatherSum //父类Sum { public: CFatherSum(){cout& ...

  3. os x下使用sed进行字符串替换

    先举个栗子: 你想要在某个文件下下面对某写文件的 链接 或者 密码进行批量的替换,并且不想产生新的备份文件.进过一顿学习,你可能会找到类似这样的命令: sed -i 's/old_link/new_l ...

  4. SpringBoot实战(九)之Validator

    表单验证,是最为常见的,今天演示的是利用hibernate-validtor进行校验,有的时候,虽然前端方面通过jQuery或者require.js校验框架进行校验,可以减轻服务器的压力和改善用户体验 ...

  5. Unity3D-射线效果

    基于airplane_02 下面新建 Line Renderer 将上面的几个地方设置下 添加Script脚本: 脚本代码为: using System.Collections; using Syst ...

  6. 《AngularJS即学即用》读书笔记(一)

    最近在学习angularJS,就买了一本<AngularJS即学即用>作为自己的入门书籍,到目前为止看了两章的内容,感觉这本书还是不错的,东西讲的浅显易懂.之所以写这篇文章,一是督促自己能 ...

  7. LWIP network interface 网卡 初始化 以 STM32 为例子 后面会有 用 2G 或者4G 模块 用 PPP拨号的 形式 虚拟出网卡 所以先以 这个为 前提

    LWIP   network interface   网卡 初始化    以  STM32  为例子  后面会有 用  2G 或者4G 模块 用 PPP拨号的 形式  虚拟出网卡  所以先以 这个为 ...

  8. Kmalloc和Vmalloc的区别

    kmalloc()和vmalloc()介绍kmalloc()用于申请较小的.连续的物理内存1. 以字节为单位进行分配,在<linux/slab.h>中2. void *kmalloc(si ...

  9. Oracle 存储结构一

    了解块中表行数据的存储 Oracle数据存储模型 逻辑结构在左,物理结构在右 有一个关系使用虚线绘制,表示段与数据文件的多对多关系.之所以使用虚线表示关系,是因为这种多对多关系不应存在. 表空间实体消 ...

  10. XML的序列化用法 vs平台开发

    protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { NewMethod(); } } #region 读取 ...