题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2157

 

题意:有一个有向图,含有n个节点,m条边,Q个询问,每个询问有 s,t,p,求 s 到 t 经过 p  个点(这 p 个点包括 t 点,不包括 s 点)的所有方案数对100求余; 

 

我们知道floyd算法中(i, j)是可以由(i,k)和(k,j)得到;那么就是经过k这个中间节点;这样一来就是 i -- k -- j  经过两个节点(k,j)所以从 i 到 j 经过2个点的方案总数是  (i,j)= ∑(i,k)*(k,j);(枚举所有的

k )然而这个正是矩阵(A*A)相乘的结果

以此类推经过3个点,4个点...p个点所求就是A^p中的(s, t);

#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
#include <map>
#include <vector>
#include <algorithm>
#include <string>
using namespace std; #define N 50
#define MOD 1000
#define met(a, b) memset(a, b, sizeof(a))
#define INF 0x3f3f3f3f typedef long long LL; struct Matrix
{
int a[N][N];
Matrix()
{
memset(a, , sizeof(a));///注意初始化;
}
}; int n, m; Matrix Mul(Matrix p, Matrix q)
{
Matrix temp;///注意初始化; for(int i=; i<n; i++)
{
for(int j=; j<n; j++)
{
for(int k=; k<n; k++)
temp.a[i][j] = (temp.a[i][j] + p.a[i][k]*q.a[k][j]) % MOD;
}
}
return temp;
} Matrix Pow(Matrix Matrix0, int k)
{
Matrix temp, Matrix1 = Matrix0; for(int i=; i<N; i++)
temp.a[i][i] = ;///注意初始化; while(k)
{
if(k% == )
temp = Mul(temp, Matrix1);
Matrix1 = Mul(Matrix1, Matrix1);
k /= ;
}
return temp;
} int main()
{
int u, v, k, Q; while(scanf("%d %d", &n, &m), m+n)
{
Matrix Matrix0; for(int i=; i<=m; i++)
{
scanf("%d %d", &u, &v);
Matrix0.a[u][v] = ;
} scanf("%d", &Q); while(Q--)
{
scanf("%d %d %d", &u, &v, &k); Matrix answer = Pow(Matrix0, k); printf("%d\n", answer.a[u][v]);
}
}
return ;
}

How many ways??---hdu2157(矩阵快速幂)的更多相关文章

  1. hdu2157矩阵快速幂

    How many ways?? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  2. HDU 2157 How many ways??:矩阵快速幂【i到j共经过k个节点的方法数】

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2157 题解: 给你一个有向图,n个节点m条边,问你从i到j共经过k个节点的方法数(不算i点). 题解: ...

  3. HDU 2157 How many ways?【矩阵快速幂】

    题目 春天到了, HDU校园里开满了花, 姹紫嫣红, 非常美丽. 葱头是个爱花的人, 看着校花校草竞相开放, 漫步校园, 心情也变得舒畅. 为了多看看这迷人的校园, 葱头决定, 每次上课都走不同的路线 ...

  4. hdu2157之矩阵快速幂

    How many ways?? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  5. HDU 2157 How many ways??(简单线性DP | | 矩阵快速幂)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2157 这道题目很多人的题解都是矩阵快速幂写的,矩阵快速幂倒是麻烦了许多了.先给DP的方法 dp[i][ ...

  6. How many ways?? HDU - 2157 矩阵快速幂

    题目描述 春天到了, HDU校园里开满了花, 姹紫嫣红, 非常美丽. 葱头是个爱花的人, 看着校花校草竞相开放, 漫步校园, 心情也变得舒畅. 为了多看看这迷人的校园, 葱头决定, 每次上课都走不同的 ...

  7. HDU 2157(矩阵快速幂)题解

    How many ways?? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  8. POJ 3734 Blocks (矩阵快速幂)

    题目链接 Description Panda has received an assignment of painting a line of blocks. Since Panda is such ...

  9. 矩阵快速幂 HDU 4565 So Easy!(简单?才怪!)

    题目链接 题意: 思路: 直接拿别人的图,自己写太麻烦了~ 然后就可以用矩阵快速幂套模板求递推式啦~ 另外: 这题想不到或者不会矩阵快速幂,根本没法做,还是2013年长沙邀请赛水题,也是2008年Go ...

  10. 51nod 算法马拉松18 B 非010串 矩阵快速幂

    非010串 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 如果一个01字符串满足不存在010这样的子串,那么称它为非010串. 求长度为n的非010串的个数.(对1e9+7取模) ...

随机推荐

  1. mysql压缩包的安装、配置、配成windows服务、远程连接及常规问题

    1.下载windows安装包 下载地址:mysql-5.7.18 2.配置my.ini [client] port = 3306 # 设置mysql客户端连接服务端时默认使用的端口 [mysql] d ...

  2. YII2中的Html助手和Request组件

    Html助手 1 .在@app\views\test的index.php中: <?php //引入命名空间 use yii\helpers\Html; ?> <?php //[一]表 ...

  3. SharePoint 沙盒无法启动新的解决方案服务的SPUserCodeV4

    开发部署时报错: 错误原因:没有启动该服务: 解决方式:打开管理中心—应用程序管理—服务应用程序--管理服务器上的服务,启动该服务即可.

  4. 哈希----字符串----time33

    //此处只是获得了字符串的hash值,但是该如何散列到hash表中呢?哪个算法会好些?! 1 //在处理以字符串为键值的哈希时,times33哈希算法有着极快的计算效率和很好的哈希分布 //小写英文单 ...

  5. Git高级操作

    本文是在Git操作指南基础上衍生出来的高级操作,如果你对git不是很熟悉,建议你先阅读Git操作指南. 一.忽略提交特定文件 如果你不想让一些文件上传到git仓库中,可以让Git忽略特定文件或是目录, ...

  6. angular学习(十五)——Provider

    转载请写明来源地址:http://blog.csdn.net/lastsweetop/article/details/60966263 Provider简单介绍 每一个web应用都是由多个对象协作完毕 ...

  7. POJ 1426 Find The Multiple(背包方案统计)

    Description Given a positive integer n, write a program to find out a nonzero multiple m of n whose ...

  8. swift--触摸(UITouch)事件(点击,移动,抬起)

    触摸事件: UITouch:一个手机第一次点击屏幕,会形成一个UITouch对象,知道离开销毁.表示触碰.UITouch对象能表明当前手指触碰的屏幕位置.状态,状态分为开始触碰.移动.离开. 具体方法 ...

  9. Objective-C语法之字符串NSString

    Objective-C里核心的处理字符串的类就是NSString和 NSMutableString这两个类,这两个类完成了Objective-C中字符串大部分功能的处理.这两个类的最主要的区别是NSS ...

  10. 数据库客户端快捷键(oracle+sybase)

    PL/SQL: 选中单行:鼠标三连击某行,那么这一行即被选中. 执行脚本:F8