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. Filter配置多个url-pattern

    java开发中会用的Filter过滤器,有时候开发需要,在一个Filter中需要配置多个过滤地址,即<url-pattern>,下面就说一下一个Filter过滤器中多个<url-pa ...

  2. 解决Entity Framework查询匿名对象后的跨域访问的一种方式

    在Entity Framework中,可以使用lambda表达式进行对数据的查询,而且可以将查询结果直接映射为对象或者对象列表,这极大的提高的开发速度,并且使数据层的数据更加方便处理和传递.但是很多时 ...

  3. selenium自动化测试资源整理

    1. 所有版本chrome下载 是不是很难找到老版本的chrome?博主收集了几个下载chrome老版本的网站,其中哪个下载的是原版的就不得而知了. http://www.slimjet.com/ch ...

  4. 获取ip地址以及获取城市等信息

    class Program { static void Main(string[] args) { string ip = GetIP(); if (ip != null) { string city ...

  5. MVC数据的注册及验证简单总结

    一.注解 注解是一种通用机制,可以用来向框架注入元数据,同时,框架不只驱动元数据的验证,还可以在生成显示和编辑模型的HTML标记时使用元数据. 二.验证注册的使用 1.Require:属性为Null或 ...

  6. 统计hive库表在具体下所有分区大小

    1 查询具体表分区大小,以字节展示 hadoop fs -du /user/hive/warehouse/treasury.db/dm_user_excercise > dm_user_exce ...

  7. js for循环实例

    1.求1-100的寄数和? //2.奇数求和 var ppt=0 for(var i=1;i<=100;i+=2){ ppt+=i } 2.求1-100的偶数和 var num=0 for(va ...

  8. spark-submit配置说明

    <Spark 官方文档>Spark配置 spark-1.6.0 原文地址 Spark配置 Spark有以下三种方式修改配置: Spark properties (Spark属性)可以控制绝 ...

  9. Spring Boot - Filter实现简单的Http Basic认证

    Copy自http://blog.csdn.net/sun_t89/article/details/51916834 @SpringBootApplicationpublic class Spring ...

  10. 普通Java类获取Spring的Bean的方法

    普通Java类获取Spring的Bean的方法 在SSH集成的前提下.某些情况我们需要在Action以外的类中来获得Spring所管理的Service对象. 之前我在网上找了好几好久都没有找到合适的方 ...