http://www.lydsy.com/JudgeOnline/problem.php?id=1297

windy在有向图中迷路了。 该有向图有 N 个节点,windy从节点 0 出发,他必须恰好在T 时刻到达节点 N-1。 现在给出该有向图,你能告诉windy总共有多少种不同的路径吗? 注意:windy不能在某个节点逗留,且通过某有向边的时间严格为给定的时间。

我太菜了……参考:http://blog.csdn.net/popoqqq/article/details/41965031

思考当边权为1时,a[i][j]=1可以表示为i到j时间为T=1的方案数为1。

那么显然我们可以求出T=2的a[i][j]=sigma(a[i][k]*a[k][j])。

以此类推求出T时间的a[i][j]……等等,这不显然是矩阵乘法快速幂吗?

那么考虑边权不为1的情况:我们把点拆开强行让他们变成1不就可以了吗。

矩阵自乘T次后答案就是a[0][n-1]。

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=;
const int p=;
char s[N];
int m;
struct node{
int g[N][N];
};
void buildI(node &a){
for(int i=;i<=m;i++){
for(int j=;j<=m;j++){
a.g[i][j]=(i==j);
}
}
}
void multi(node x,node y,node &z){
memset(z.g,,sizeof(z.g));
for(int i=;i<=m;i++){
for(int j=;j<=m;j++){
if(x.g[i][j]){
for(int k=;k<=m;k++){
z.g[i][k]+=x.g[i][j]%p*y.g[j][k]%p;
z.g[i][k]%=p;
}
}
}
}
return;
}
node a,b;
void qpow(int k){
buildI(a);
while(k){
if(k&)multi(a,b,a);
multi(b,b,b);
k>>=;
}
return;
}
int solve(int k,int n){
qpow(k);
return a.g[][n]%p;
}
int t,n;
inline int tp(int i,int j){return (j-)*n+i;}
int main(){
scanf("%d%d",&n,&t);m=n*;
for(int i=;i<=n;i++){
for(int j=;j<=;j++){
b.g[tp(i,j)][tp(i,j-)]=;
}
}
for(int i=;i<=n;i++){
scanf("%s",s+);
for(int j=;j<=n;j++){
int k=s[j]-'';
b.g[i][tp(j,k)]=;
}
}
printf("%d\n",solve(t,n));
return ;
}

+++++++++++++++++++++++++++++++++++++++++++

+本文作者:luyouqi233。               +

+欢迎访问我的博客:http://www.cnblogs.com/luyouqi233/+

+++++++++++++++++++++++++++++++++++++++++++

BZOJ1297:[SCOI2009]迷路——题解的更多相关文章

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

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

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

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

  3. BZOJ1297 [SCOI2009]迷路 矩阵乘法

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1297 题意概括 有向图有 N 个节点,从节点 0 出发,他必须恰好在 T 时刻到达节点 N-1. ...

  4. BZOJ1297 [SCOI2009]迷路 【矩阵优化dp】

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

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

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

  6. bzoj1297: [SCOI2009]迷路

    矩阵. 一个图的邻接矩阵的m次幂相当于 长度恰好为m的路径数.这要求边权为1. 因为边权小于等于9,所以可以把一个点拆成9的点. 拆成的第(i+1)个点向第i个点连边. 如果存在边(u,v,w) 就由 ...

  7. 2018.10.23 bzoj1297: [SCOI2009]迷路(矩阵快速幂优化dp)

    传送门 矩阵快速幂优化dp简单题. 考虑状态转移方程: f[time][u]=∑f[time−1][v]f[time][u]=\sum f[time-1][v]f[time][u]=∑f[time−1 ...

  8. bzoj1297: [SCOI2009]迷路(矩阵乘法+拆点)

    题目大意:有向图里10个点,点与点之间距离不超过9,问从1刚好走过T距离到达n的方案数. 当时看到这题就想到了某道奶牛题(戳我).这两道题的区别就是奶牛题问的是走T条边,这道题是每条边都有一个边权求走 ...

  9. bzoj1297 [SCOI2009]迷路——拆点+矩阵快速幂

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1297 一看感觉是矩阵快速幂之类的,但边权不好处理啊: 普通的矩阵快速幂只能处理边权为1的,所 ...

随机推荐

  1. git 取消commit

    git如何撤销上一次commit操作 1.第一种情况:还没有push,只是在本地commit git reset --soft|--mixed|--hard <commit_id> git ...

  2. 一个只有十行的精简MVVM框架

    本文来自网易云社区. 前言 MVVM模式相信做前端的人都不陌生,去网上搜MVVM,会出现一大堆关于MVVM模式的博文,但是这些博文大多都只是用图片和文字来进行抽象的概念讲解,对于刚接触MVVM模式的新 ...

  3. 【转】Oracle 如何找回已经删除了的表记录

    有的时候我们不小心把数据库表(emp)中重要的记录给删除了,怎么给找回来了,看下面这个例子你就会明白. 某一天,10点钟的时候,张三一不小心给数据库表emp的一条重要记录给删除了并且还提交了,此时也没 ...

  4. docker in docker

    docker run --rm可以从一个镜像启动容器,并在容器执行完成后自动删除,这在计算任务中非常有用. 例如,我们通过以下步骤完成计算任务容器的启动: 1 将输入数据通过卷挂载方式连接到计算任务容 ...

  5. react组件性能

    一.渲染原理 二.性能优化 三.Immutable在性能优化中的作用

  6. Windowserver2012部署always on

    1.首先,安装域环境 IP设置 域服务安装 如果建立域配置时出现 administrator账户密码不符合要求错误: cmd运行命令: net user administrator /password ...

  7. leetcode-颜色分类

     颜色分类     给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 2 分别表示 ...

  8. JavaScript 之 对象/JSON/数组

    对象 简单说,所谓对象,就是一种无序的数据集合,由若干个“键值对”(key-value)构成. var obj = { p: 'Hello World' }; 上面代码中,大括号就定义了一个对象,它被 ...

  9. 【第一章】MySQL数据概述

    安装部署 备份恢复主备复制读写分离HA架构分布式数据库压力测试性能优化自动化运维 ==数据的存储方式1. 人工管理阶段2. 文件系统阶段3. 数据库系统管理阶段 ==数据库技术构成1. 数据库系统 D ...

  10. [转载]Tensorflow中reduction_indices 的用法

    Tensorflow中reduction_indices 的用法 默认时None 压缩成一维