HDU 2157 How many ways?? 【矩阵经典8】

海光(hygon)CPU ESXI vSphere 紫屏问题修复记录 海光服务器ESXI 紫屏问题修复 阅读详情

任意门:http://acm.hdu.edu.cn/showproblem.php?pid=2157

How many ways??

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5339    Accepted Submission(s): 2109


Problem Description
春天到了, HDU校园里开满了花, 姹紫嫣红, 非常美丽. 葱头是个爱花的人, 看着校花校草竞相开放, 漫步校园, 心情也变得舒畅. 为了多看看这迷人的校园, 葱头决定, 每次上课都走不同的路线去教室, 但是由于时间问题, 每次只能经过k个地方, 比方说, 这次葱头决定经过2个地方, 那他可以先去问鼎广场看看喷泉, 再去教室, 也可以先到体育场跑几圈, 再到教室. 他非常想知道, 从A 点恰好经过k个点到达B点的方案数, 当然这个数有可能非常大, 所以你只要输出它模上1000的余数就可以了. 你能帮帮他么?? 你可决定了葱头一天能看多少校花哦
 

 

Input
输入数据有多组, 每组的第一行是2个整数 n, m(0 < n <= 20, m <= 100) 表示校园内共有n个点, 为了方便起见, 点从0到n-1编号,接着有m行, 每行有两个整数 s, t (0<=s,t<n) 表示从s点能到t点, 注意图是有向的.接着的一行是两个整数T,表示有T组询问(1<=T<=100),
接下来的T行, 每行有三个整数 A, B, k, 表示问你从A 点到 B点恰好经过k个点的方案数 (k < 20), 可以走重复边。如果不存在这样的走法, 则输出0
当n, m都为0的时候输入结束
 

 

Output
计算每次询问的方案数, 由于走法很多, 输出其对1000取模的结果
 

 

Sample Input
4 4 0 1 0 2 1 3 2 3 2 0 3 2 0 3 3 3 6 0 1 1 0 0 2 2 0 1 2 2 1 2 1 2 1 0 1 3 0 0
 

 

Sample Output
2 0 1 3
 

题意概括:

给一个有向图,问从A点恰好走k步(允许重复经过边)到达B点的方案数(mod 1000)

 

解题思路:

把 给定的图 D 转为邻接矩阵,即A(i,j)=1当且仅当存在一条边 i->j。

则 A的 l 次幂 Al  ( l >= 1) 中元素 aij(l)  为 D 中 vi -> vj 长度为 l 的通路数。

 

AC code:

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <algorithm>
 4 #include <cstring>
 5 #include <cmath>
 6 #define LL long long
 7 #define Mod 1000
 8 using namespace std;
 9 const int MAXN = 101;
10 int N, M, T;
11 
12 struct mat
13 {
14     int m[MAXN][MAXN];
15 }base, tmp, ans;
16 
17 mat muti(mat a, mat b)
18 {
19     mat res;
20     memset(res.m, 0, sizeof(res.m));
21 
22     for(int i = 0; i < N; i++)
23     for(int j = 0; j < N; j++)
24     {
25         if(a.m[i][j]){
26             for(int k = 0; k < N; k++)
27                 res.m[i][k] = (res.m[i][k] + a.m[i][j] * b.m[j][k])%Mod;
28         }
29     }
30     return res;
31 }
32 
33 mat qpow(mat a, int n)
34 {
35     mat res;
36     memset(res.m, 0, sizeof(res.m));
37     for(int i = 0; i < N; i++) res.m[i][i] = 1;
38     while(n){
39         if(n&1) res = muti(res, a);
40         n>>=1;
41         a = muti(a, a);
42     }
43     return res;
44 }
45 
46 int main()
47 {
48     int a, b, k;
49     while(~scanf("%d%d", &N, &M) && (N+M)){
50         memset(base.m, 0, sizeof(base.m));
51         for(int i = 1; i <= M; i++){
52             scanf("%d%d", &a, &b);
53             base.m[a][b] = 1;
54         }
55 
56         scanf("%d", &T);
57         while(T--){
58             scanf("%d%d%d", &a, &b, &k);
59             ans = qpow(base, k);
60             printf("%d\n", ans.m[a][b]);
61         }
62     }
63     return 0;
64 }
View Code

 

道路缺陷检测实战指南:基于YOLOv11的深度学习系统从搭建到落地 道路缺陷检测项目的每一步,都是“理论→实践→反思→优化”的成长循环。当你看到自己开发的系统能精准识别出道路上的每一处裂缝、每一个坑洼时,那种“技术解决真实问题”的成就感,会让你明白深度学习不止是论文里的公式,更是改变行业的工具。如果过程中遇到模型不收敛、界面功能异常等问题,不妨把问题拆解成“数据是否标注准确?”“模型参数是否合理?”“界面逻辑是否有漏洞?”等小问题逐一排查。记住,每解决一个问题,你就离“能独立落地AI项目的工程师”更近一步。 阅读详情

相关推荐

FOC控制必看:单/双/三电阻电流采样方案全对比(附NXP实战避坑指南)

本文深入对比了FOC控制中单电阻、双电阻和三电阻电流采样方案的优劣与适用场景,重点剖析了采样时序、窗口与ADC转换的工程挑战。针对NXP平台,提供了解决采样窗口过窄的实战方案与配置指南,帮助工程师根据成本与性能需求做出最优选择,并规避常见设计陷阱。

n2o3p4的博客 416

hdu 2157 How many ways??

 How many ways??Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 369    Accepted Submission(s): 97Problem Description春天到了, HDU校园里开满了花, 姹紫嫣红

软件征途 1001

5.44GHz超高精度!STM32G474的HRTIM时钟配置避坑指南

本文深入解析STM32G474内置高分辨率定时器的时钟配置要点,帮助工程师避开常见陷阱。文章详细阐述了从系统时钟到5.44GHz等效时基的路径,重点分析了预分频器乘法器、周期计算溢出、影子寄存器同步等关键配置,并结合实测波形对比,确保HRTIM在电机控制、数字电源等精密应用中发挥极限性能。

book8的博客 524

hdu-2157-How many ways?? (矩阵)(dp优化加速)

题目链接: 题意:HDU2157How many ways?? 有一个有向图,有N个点,M条边,点的编号从0~N-1,然后有T组询问,每组询问是(A,B,k),问你从A点出发到B点恰好走k步的方案数。结果对1000取余。 (NN,k 思路: •有时候dp的递推式子也可以表示成常系数线性递推数列的形式,这时候就可以用矩阵快速幂进行优化了。 一开始用dp的思路来思考,设dp

qq_36782366的博客 425

手眼标定(EyeToHand)推导

Base为基坐标系(B),工具末端坐标系(T),标定板为Mark坐标系(M),相机坐标系(C)对于每两个姿态都存在上式,组成一个AX=XB的矩阵方程,X为。此时转换成AX=0的问题,单纯用SVD求奇异解便可得到。相机坐标系到Base基坐标系下的转换关系。已知标定板与机械臂末端的相对位置固定不变,,即。带入(2)式求,至此求解出需要的手眼矩阵。在眼在手外的时候,其实是要求解。

stevenreally6的博客 1144

【WRF-UCM】BEP+BEM 模拟:README

【WRF-UCM】BEP+BEM 模拟:README

WW、forever的博客 223

[HDOJ-1978]How many ways

Problem Description 这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m)。游戏的规则描述如下: 1.机器人一开始在棋盘的起始点并有起始点所标有的能量。 2.机器人只能向右或者向下走,并且每走一步消耗一单位能量。 3.机器人不能在原地停留。 4.当机器人选择了一条可行路径后,当他走到这条路径的终点时,他将只有终点所标记的能量。 如上图,机...

GreatWzi的博客 674

23、管状剪纸结构的研究与功能生成连杆机构的综合设计

本文研究了管状剪纸结构的压缩运动特性,通过剪纸技术将非刚性可折叠的Yoshimura和Kresling折纸结构转化为刚性可折叠结构,并提出径向可闭合剪纸(RC-kiri)构型。推导了位移与折叠角之间的数学关系,设计了带外部LET接头的RC-kiri模型,建立了力-位移理论模型并通过Abaqus进行有限元验证,制作了3D打印物理模型以测量直径变化。同时,研究了四杆和六杆功能生成连杆机构的综合设计方法,基于负闭合运动链和最小二乘法实现函数生成。结果表明理论、仿真与实验整体吻合良好,误差来源得到分析,为机器人、机

nokia的博客 168

hdu 2157 How many ways?(动态规划 | 矩阵快速幂)

How many ways? - http://acm.hdu.edu.cn/showproblem.php?pid=2157 分析 以样例1的数据为例,S0、S1、S2和S3表示到达0、1、2和3位置的途径数量。 初始时刻在0点,故初始时刻有: S0 = 1、 S1 = 0、 S2 = 0、S3 = 0 经过 t 步后, 代码 在这里插入代码片 ...

jpphy0的博客 346

完整复现YOLOv8:包括训练、测试、评估、预测阶段【本文源码已开源,地址在文章末尾】

(这里主要是在colab.research.google.com实现的,本地的配置也是类似的方法)YOLOv8是一种用于目标检测的深度学习算法。主要参考:https://github.com/ultralytics/ultralytics/blob/main/README.zh-CN.md。yolov8的权重:https://github.com/ultralytics/assets/releases。yolov8的文档:https://v8docs.ultralytics.com/

源代码杀手的博客 1万+

【电弧】基于matlab simulink电弧仿真模型(Mayr Cassie电弧模型)【含Matlab源码 9226期】

simulink电弧仿真模型(Mayr Cassie电弧模型) 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 194

HDU2157How many ways??(DP)

题目大意:给你一张道路情况的无权有向图,请你找出从a到b中途经过k个旅游景点的道路方案数,并且结果要模除1000。解题思路:本题之前有做过一个类似的,只不过所求的解不同,那题是求最短路。这题则是用DP,设状态dp[k][j]表示从起点到达j位置,并且中途经过k个旅游景点的方案数,则状态转移方程:dp[k][z]=(dp[k][z]+dp[k-1][j])%1000,解释:从起点到达终点如果可以直接...

小胡同的诗 282

RT-DETR改进前必看 - Ultralytics调参 1:1还原RT-DETR官方版本实验环境,更方便改进

的项目文件中集成了YOLOv3v5v6v8v9v10rt-detr11以及其中不同大小的模型结构,更方便我们学习和使用。的参数配置在路径下,其中中设置了模型在训练Train验证Val/Test预测Predict可视化Visualize导出Export超参数Hyperparameters、以及跟踪Tracker的相关参数。在调参过程中主要涉及训练Train和超参数Hyperparameters。下面主要介绍一下初始超参数Hyperparameters。

Limiiiing的博客 7968

hdu 2157 How many ways?? 矩阵快速幂

hdu 2157 How many ways?? 矩阵快速幂 题目链接:hdu 2157 How many ways??  分析:令M[i][j] = 1 表示从i到j 连通,即i, j经过一个点到达的方案数为1。 那么∑(M[i][k] + M[k][j]), k∈(0, N-1), 就表示i, j经过两个点到达的方案数。即将矩阵M^n就可以求出i, j经过N个点到达的方案数。 #incl

Fighting! 791

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

HDU 2157 How many ways?? 【矩阵快速幂水题,离散数学结论】

HDU 2157 How many ways?? 离散数学中证明过这样一个结论: 书上写了一大堆,说人话 就是从u点到v点恰好经过k步的方案数,为邻接矩阵的k次幂得到的矩阵(假设是ans)中的元素ans[u][v]。 出题人比较友好,幂次比较小(k<20),不用矩阵快速幂也能过,但还是写一下矩阵快速幂的代码: #include <bits/stdc++.h> using namespace std; const int N=22,mod=1000; int n,m,x,y,k,q; st

nefu_ljw的博客 1356

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

HDU 2157 How many ways??

http://acm.hdu.edu.cn/showproblem.php?pid=2157 题意 : 中文的、就不多说了~~~~ 废话 :嗯,第一次使用矩阵这一看似很高端的东东~~,表示大一上学期的时候实在是水水地听线性代数的,现在才发现矩阵真的蛮重要的(默默的鄙视下线代老师——从来都没和我们说过矩阵的用处)。 这道题目使用矩阵,我是开三维数组的,保存每个状态,状态P(n) = P(n-1

Dewey's blog 849

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

矩阵十大经典题目之八-hdu-2157-How many ways??

题目大意:给定一个有向图,问从A点恰好走k步(允许重复经过边)到达B点的方案数mod p的值 把 给定的图转为邻接矩阵,即A(i,j)=1当且仅当存在一条边i->j。令C=A*A,那么C(i,j)=ΣA(i,k)*A(k,j),实际上就 等于从点i到点j恰好经过2条边的路径数(枚举k为中转点)。类似地,C*A的第i行第j列就表示从i到j经过3条边的路径数。同理,如果要求经过k步的 路径数,我

青竹梦 3774

【HDU 2157】 How Many Ways??

【题目链接】 点击打开链接 【算法】 设A[i][j]为走一条边,从i走到j的方案数 C[i][j]为走两条边,从i走到j的方案数,显然有 : C = A * A = A^2 C'[i][j]为走三条边,从i走到j的方案数,那么 : C' = C * A = (A * A) * A = A...

212

hdu2157How many ways?? 矩阵快速幂

//给定一个有向图,问从A点恰好走k步(允许重复经过边)到达B点的方案数mod p的值 //把给定的图转为邻接矩阵,即A(i,j)=1当且仅当存在一条边i->j。令C=A*A,那么C(i,j)=ΣA(i,k)*A(k,j), //实际上就等于从点i到点j恰好经过2条边的路径数(枚举k为中转点) //类似地,C*A的第i行第j列就表示从i到j经过3条边的路径 //同理,如果要求经过k步的路径数,我们

ijbuhv的专栏 651

How many ways?? hdu 2157

#include #include #include using namespace std; int tmp[21][21],ans[21][21],b[21][21]; int N; void mul(int a[][21],int b[][21]) { memset(tmp,0,sizeof(tmp)); for(int i=1; i<=N; i++)

ihe 1110310415 linyiming QQ:545931195 1017

HDU 2157 How many ways?? (矩阵快速幂)

How many ways?? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3429    Accepted Submission(s): 1316 Problem Description 春天到了, HDU校

Mr_Treeeee的博客 379

How many ways?? HDU - 2157 (矩阵快速幂)

春天到了, HDU校园里开满了花, 姹紫嫣红, 非常美丽. 葱头是个爱花的人, 看着校花校草竞相开放, 漫步校园, 心情也变得舒畅. 为了多看看这迷人的校园, 葱头决定, 每次上课都走不同的路线去教室, 但是由于时间问题, 每次只能经过k个地方, 比方说, 这次葱头决定经过2个地方, 那他可以先去问鼎广场看看喷泉, 再去教室, 也可以先到体育场跑几圈, 再到教室. 他非常想知道, 从A 点恰好经...

Top_Spirit的博客 214

hdoj2157How many ways??【矩阵快速幂】

How many ways?? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2141    Accepted Submission(s): 791 Problem Description 春天到了, HDU校园

走一步再走一步 630

HDU 2157 How many ways??

题目地址:点击打开链接 思路:矩阵快速幂+有向可达图,有向可达图还不太明白,有时间看看 AC代码: #include #include using namespace std; int per[21][21],s[21][21],middle[21][21],n; void matrix_mul(int a[21][21],int b[21][21])//数组就是在原地址上进行操作

Java识堂,一个有干货的微信公众号 436

hdu2157 How many ways?? (矩阵快速幂)

题目点我点我点我 为什么会用到矩阵快速幂呢?看这篇博客的经典题目8,原链接:http://www.matrix67.com/blog/archives/276  经典题目8 给定一个有向图,问从A点恰好走k步(允许重复经过边)到达B点的方案数mod p的值     把给定的图转为邻接矩阵,即A(i,j)=1当且仅当存在一条边i->j。令C=A*A,那么C(i,j)=Σ

blanKey的博客 868
上一篇: VOJ1067 【矩阵经典7 构造矩阵】
下一篇: POJ 1830 开关问题 【01矩阵 高斯消元】
莜莫oO
博客等级 码龄9年 7粉丝 226原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值