1482 路线统计

时间限制: 1 s

空间限制: 256000 KB

题目等级 : 钻石 Diamond

题目描述 Description

N个节点的有向图, 求从start到finish刚好经过时间time的总方案数 mod 502630.

输入描述 Input Description

第一行包含一个整数n, 所有点是从0到N-1编号.

接下来n行,每行包含n个字符. 第i行第j个字符表示i到j需要的时间. 字符只可能是’1’到’5’, 或者是’.’表示i不能到达j. 保证主对角线都是’.’.

接下来一行3个整数start, finish, time.

输出描述 Output Description

输出总方案数.

样例输入 Sample Input

3

.12

2.1

12.

0 2 5

样例输出 Sample Output

8

数据范围及提示 Data Size & Hint

对于20%的数据, 输入的字符不是’1’就是’.’;

对于100%的数据, 1 <= n <= 10; 1 <= start,finish <= n; 1 <= time <= 10^9.

分类标签 Tags

矩阵乘法 数论

/*
矩阵乘法.
没想出来 唉.
比较神奇.
t为1的话直接矩阵乘法.
but 这题1<=t<=5啊.
这样的话我们考虑拆点.
拆成这样i1->i2->i3->i4->i5.
然后对于it(第t个点)连一条边到j.
这样我们每条边的长度就都是1啦.
然后就可以转移啦.
*/
#include<iostream>
#include<cstdio>
#define MAXN 101
#define LL long long
#define mod 502630
using namespace std;
int n,m,s,t,k;
LL ans[MAXN][MAXN],b[MAXN][MAXN],c[MAXN][MAXN];
void mi()
{
while(k)
{
if(k&1)
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
c[i][j]=(c[i][j]+ans[i][k]*b[k][j])%mod;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
ans[i][j]=c[i][j],c[i][j]=0;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
c[i][j]=(c[i][j]+b[i][k]*b[k][j])%mod;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
b[i][j]=c[i][j],c[i][j]=0;
k>>=1;
}
}
int main()
{
char ch;
scanf("%d",&n);
for(int i=1;i<=n;i++)
for(int j=1;j<5;j++)
ans[i+(j-1)*n][i+j*n]=b[i+(j-1)*n][i+j*n]=1;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
cin>>ch;
int x=int(ch-48);
if(ch!='.') ans[i+(x-1)*n][j]=b[i+(x-1)*n][j]=1;
}
scanf("%d%d%d",&s,&t,&k);
s++,t++;k--;
n*=6;
mi();
cout<<ans[s][t];
return 0;
}

Codevs 1482 路线统计(矩阵乘法)的更多相关文章

  1. [codevs 1482]路线统计(矩阵乘法)

    题目:http://codevs.cn/problem/1482/ 分析:很像“经过K条边的最短路径条数”.但有所不同,那就是不是边数固定,而是路径总长度固定.看似不能用矩阵乘法了……但注意到每条边的 ...

  2. codevs 3332 数列 (矩阵乘法)

    /* 裸地矩阵乘法 矩阵很好想的 1 1 0 0 0 1 1 0 0 */ #include<iostream> #include<cstring> #include<c ...

  3. Codevs 1070 普通递归关系(矩阵乘法)

    1070 普通递归关系 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 考虑以下定义在非负整数n上的递归关系 f(n) = f0 ...

  4. 路线统计(codevs 1482)

    题目描述 Description N个节点的有向图, 求从start到finish刚好经过时间time的总方案数 mod 502630. 输入描述 Input Description 第一行包含一个整 ...

  5. 矩阵乘法快速幂 codevs 1250 Fibonacci数列

    codevs 1250 Fibonacci数列  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond   题目描述 Description 定义:f0=f1=1 ...

  6. Codevs 1287 矩阵乘法&&Noi.cn 09:矩阵乘法(矩阵乘法练手题)

    1287 矩阵乘法  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 小明最近在为线性代数而头疼, ...

  7. Codevs No.3147 矩阵乘法2

    2016-06-01 17:33:30 题目链接: 矩阵乘法2 (Codevs No.3147) 题目大意: 给定两个大小相同的正方形矩阵A,B.多次询问,每次求乘后矩阵的一个子矩阵所有元素的和. 解 ...

  8. Codevs No.1287 矩阵乘法

    2016-06-01 16:53:23 题目链接: 矩阵乘法 (Codevs No.1287) 题目大意: 给你两个可乘矩阵a,b,求a*b 解法: 定义....... //矩阵乘法 (Codevs ...

  9. 矩阵乘法 codevs 1287 矩阵乘法

    1287 矩阵乘法  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold       题目描述 Description 小明最近在为线性代数而头疼,线性代数确实很抽象 ...

随机推荐

  1. golang---获取windows系统相关信息

    package main import ( "fmt" "net" "runtime" "strings" " ...

  2. Nginx惊群问题

    Nginx惊群问题 "惊群"概念 所谓惊群,可以用一个简单的比喻来说明: 一群等待食物的鸽子,当饲养员扔下一粒谷物时,所有鸽子都会去争抢,但只有少数的鸽子能够抢到食物, 大部分鸽子 ...

  3. Java8 基础数据类型包装类-Long

     https://blog.csdn.net/u012562117/article/details/79023440 基础 //final修饰不可更改,每次赋值都是新建类(其中-128~127是通过L ...

  4. C#中Unity对象的注册方式与生命周期解析

    1.示例代码 请详细阅读 static void Main(string[] args) { { Console.WriteLine("----------全局设置----------&qu ...

  5. .NET Core 中三种模式依赖注入的生命周期。

    注入模式 同一个请求作用域 不同的请求作用域 AddSingleton 同一个实例 同一个实例 AddScoped 同一个实例 新实例 AddTransient 新实例 新实例

  6. Flutter 与 Android 的交互

    https://juejin.im/post/5cd91de4518825686b120921 https://juejin.im/entry/5b64292be51d451995676398

  7. 修正DejalActivityView在iOS8之前系统上存在的Bug

    DejalActivityView是国外的第三方库,可自定义文本内容和文本长度的菊花转加载指示器效果.该第三方库与其它hud存在不同,能够遮盖键盘:可以自定义遮盖NavigationBar或不遮盖Na ...

  8. [AIR] NativeExtension在IOS下的开发实例 --- IOS项目的创建 (一)

    来源:http://bbs.9ria.com/thread-102037-1-1.html 最近看到本版块的很多关于NativeExtension的应用.但是都是在Android下面的应用.也有很多朋 ...

  9. Discuz!数据库操作DB类和C::t类介绍

    类定义文件 DB类: 文件\source\class\class_core.php class DB extends discuz_database {} discuz_database类定义 文件\ ...

  10. 「8-27

    没有别的目的, 是最近发现一个小软件, 用起来感觉很不错, 所以想分享给大家. 首先这是一个 macOS 软件, 它的功能也很简单, 就是在菜单栏显示日期时间, 点按它可以显示日历, 没错, 简单到是 ...