题意

边权\(w \in [1, 9]\)的\(n\)个结点的有向图,图上从\(1\)到\(n\)长度为\(d\)的路径计数,\(n \leq 10\).

题解

如果边权为\(1\)很经典,设\(f[k][i]\)表示从\(1\)到\(i\),长度为\(k\)的路径条数,则\(f[k][i] = \sum_{j=1}^n f[k - 1][j] a[j][i]\)。于是可以构造初始矩阵,再乘以\(a^k\)(\(a\)为图的邻接矩阵)。

现在边权不唯一,但是边权很小,可以拆点,一个点拆成\(9\)个点,\(9\)点连成一条链,如果要连出边就从最后一个点连出去,如果连入边就连到相应到点就好。

注意模数比较小,取模可以少一些,会跑的比较快

#include <algorithm>
#include <cstdio>
using namespace std; const int N = 12;
const int M = 92;
const int mo = 2009; struct matrix {
int a[M][M], n, m;
matrix operator *(const matrix & b) {
matrix ans; ans.n = n; ans.m = b.m;
for(int i = 1; i <= ans.n; i ++) {
for(int j = 1; j <= ans.m; j ++) {
ans.a[i][j] = 0;
for(int k = 1; k <= m; k ++)
ans.a[i][j] += a[i][k] * b.a[k][j];
ans.a[i][j] %= mo;
}
}
return ans;
}
friend matrix mpow(matrix a, int b) {
matrix ans = a; b --;
for(; b >= 1; b >>= 1, a = a * a)
if(b & 1) ans = ans * a;
return ans;
}
} fir, tr; int n, m, d;
char s[N]; int pos(int x, int y = 8) {
return x + y * n;
} int main() {
scanf("%d%d", &n, &d);
tr.n = tr.m = m = n * 9;
for(int i = 1; i <= m; i ++)
for(int j = 1; j <= m; j ++)
tr.a[i][j] = 0;
for(int i = 1; i <= n; i ++) {
for(int j = 1; j <= 8; j ++)
tr.a[pos(i, j - 1)][pos(i, j)] = 1;
scanf("%s", s + 1);
for(int j = 1; j <= n; j ++) {
int w = s[j] ^ '0';
if(w) tr.a[pos(i)][pos(j, 9 - w)] = 1;
}
}
fir.n = 1; fir.m = m;
for(int i = 1; i <= fir.m; i ++)
fir.a[1][i] = i == pos(1) ? 1 : 0;
fir = fir * mpow(tr, d);
printf("%d\n", fir.a[1][pos(n)]);
return 0;
}

「BZOJ 1297」「SCOI 2009」迷路「矩阵乘法」的更多相关文章

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

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

  2. BZOJ 4417 Luogu P3990 [SHOI2013]超级跳马 (DP、矩阵乘法)

    题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=4417 (luogu)https://www.luogu.org/prob ...

  3. BZOJ 2004: [Hnoi2010]Bus 公交线路 [DP 状压 矩阵乘法]

    传送门 题意: $n$个公交站点,$k$辆车,$1...k$是起始站,$n-k+1..n$是终点站 每个站只能被一辆车停靠一次 每辆车相邻两个停靠位置不能超过$p$ 求方案数 $n \le 10^9, ...

  4. 【BZOJ 4180】 4180: 字符串计数 (SAM+二分+矩阵乘法)

    4180: 字符串计数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 164  Solved: 75 Description SD有一名神犇叫做Oxe ...

  5. bzoj 1706: [usaco2007 Nov]relays 奶牛接力跑【矩阵乘法+Floyd】

    唔不知道怎么说--大概核心是把矩阵快速幂的乘法部分变成了Floyd一样的东西,非常之神 首先把点离散一下,最多有200个,然后建立邻接矩阵,a[u][v]为(u,v)之间的距离,没路就是inf 然后注 ...

  6. 「BZOJ 4228」Tibbar的后花园

    「BZOJ 4228」Tibbar的后花园 Please contact lydsy2012@163.com! 警告 解题思路 可以证明最终的图中所有点的度数都 \(< 3\) ,且不存在环长是 ...

  7. 「BZOJ 3645」小朋友与二叉树

    「BZOJ 3645」小朋友与二叉树 解题思路 令 \(G(x)\) 为关于可选大小集合的生成函数,即 \[ G(x)=\sum[i\in c ] x^i \] 令 \(F(x)\) 第 \(n\) ...

  8. 「BZOJ 4502」串

    「BZOJ 4502」串 题目描述 兔子们在玩字符串的游戏.首先,它们拿出了一个字符串集合 \(S\),然后它们定义一个字符串为"好"的,当且仅当它可以被分成非空的两段,其中每一段 ...

  9. 「BZOJ 4289」 PA2012 Tax

    「BZOJ 4289」 PA2012 Tax 题目描述 给出一个 \(N\) 个点 \(M\) 条边的无向图,经过一个点的代价是进入和离开这个点的两条边的边权的较大值,求从起点 \(1\) 到点 \( ...

随机推荐

  1. MySQL 采用Xtrabackup对数据库进行全库备份

    1,xtrabackup简介 关于数据库备份以及备份工具,参考:http://blog.itpub.net/26230597/viewspace-1460065/,这里来介绍xtrabackup已经如 ...

  2. RabbitMQ 基本概念和使用

    当前各种应用大量使用异步消息模型,并随之产生众多消息中间件产品及协议,标准的不一致使应用与中间件之间的耦合限制产品的选择,并增加维护成本.AMQP是一个提供统一消息服务的应用层标准协议,基于此协议的客 ...

  3. Python:包、模块、类、函数的调用

    一.关系 包一般指文件夹或者安装包(安装包一般也是压缩后的文件夹),里面包含多个.py文件(必须有一个__init__.py文件),一般也含有多个子包(或子文件夹): 一般一个.py文件就是一个模块, ...

  4. Java学习之ZooKeeper瑞士军刀简介

    1.简介 ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现.分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅.负载均衡.命名服务 ...

  5. 第六章 Java性能调优工具(待续)

    Java性能调优工具 Windows工具 JDK命令行工具 JConsole工具 Visual VM多合一工具 Visual VM对QQL的支持 MAT内存分析工具 MAT对QQL的支持 JProfi ...

  6. redis学习一 大体概述

    redis 命令查找:http://doc.redisfans.com/ 1,redis 技术简介以及疑问      redis是一个开源的,内存存储的数据结构服务器.可以用做数据库,高速缓存和消息队 ...

  7. leetcode860

    使用C++进行编码: bool lemonadeChange(vector<int>& bills) { ; ; ; int N = bills.size(); ; i < ...

  8. EF CODEFIRST WITH ORACLE 存储过程

    EF  CODEFIRST WITH ORACLE 解决存储过程一直没找到解决方案 所以最后也没办法还是用了最基本的解决方案 采用Oracle.ManagedDataAccess提供的ADO基础访问类 ...

  9. 用JS,做一个简单的计算器

    <!DOCTYPE html> <html> <head> <meta charset="utf-8">   <title&g ...

  10. solr注意事项-solrconfig中的默认搜索域会覆盖schema中的默认搜索域,注意copyfeild中被corp的字段搜索

    结论一:solrconfig.xml的默认搜索配置权限高于schema.xml中的默认搜索配置! 配置1:solrconfig.xml文件中关于select的配置: <requestHandle ...