P2151 [SDOI2009] HH去散步 题解(图论上的矩阵加速递推)
HH 去散步 (对偶图) P2151 [SDOI2009]
关键词:递推、图论、矩阵加速
P2151 [SDOI2009] HH 去散步 - 洛谷
题目描述
HH 有个一成不变的习惯,喜欢饭后百步走。所谓百步走,就是散步,就是在一定的时间内,走过一定的距离。但是同时 HH 又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回。又因为 HH 是个喜欢变化的人,所以他每天走过的路径都不完全一样,他想知道他究竟有多少种散步的方法。
现在给你学校的地图 (假设每条路的长度都是一样的都是 1),问长度为 t,从给定地点 A 走到给定地点 B 共有多少条符合条件的路径。
输入格式
第一行:五个整数 N , M 法 A , B 。其中 N" 表示学校里的路口的个数,M 表示学校里的路的条数,t 表示 HH 想要散步的距离,A 表示散步的出发点,而 B 则表示散步的终点。
接下来 M 行,每行一组\(A_{i}\) , \(B_{i}\) ,表示从路口\(A_{i}\)到路口\(B_{i}\)有一条路。数据保证\(A_{i}â B_{i}\),但不保证任意两个路口之间至多只有一条路相连接。路口编号从 0 到\(N-1\)。同一行内所有数据均由一个空格隔开,行首行尾没有多余空格。没有多余空行。答案模 45989。
输出格式
一行,表示答案。
分析
1. 计数问题,不是搜索就是递推,数据范围大,用递推
2. 递推就列表达式:
\]
\]
3. 优化递推式:
不满足不两次都是来回走的限制,考虑加维 (怎么加?限制边不能再走,就加一维表示从哪条边来),而起点确定,可以把表达式优化成:
\]
\(F_{n}[e, j]\) 表示从边e 来,走 n 步,到达 j 的方案数
t 的范围非常大,必须考虑矩阵加速:发现表达式中,体现的是边转移关系,边转移,就是在边间连 “边”,对偶图
4. 如何建立对偶图?
观察表达式,发现边还需表述 “走过该边到达哪” 的信息, 要表述该信息,就需要有向边。
用 [i,j] 表示如下关系:
\(u \stackrel{i}{\to} k \stackrel{j}{\to} v\)
有向边 i 可经过一个点到达有向边 j,走过有向边 j 就相当于抵达点 v
5. 所以矩阵递推也不难设计:
r 矩阵表示答案,从起点走 n 步到达该边的方案数
(根据上文,到达一个边相当于到达该边指向的点)g 矩阵表示边之间的转移关系,\(g[i, j] = 1\)表述 i 可以转移到 j
(注:豆包提供格式整理)
P2151 [SDOI2009] HH去散步 题解(图论上的矩阵加速递推)的更多相关文章
- 「 洛谷 」P2151 [SDOI2009]HH去散步
小兔的话 欢迎大家在评论区留言哦~ HH去散步 题目限制 内存限制:125.00MB 时间限制:1.00s 标准输入 标准输出 题目知识点 动态规划 \(dp\) 矩阵 矩阵乘法 矩阵加速 矩阵快速幂 ...
- 洛谷P2151 [SDOI2009] HH去散步 [矩阵加速]
题目传送门 HH去散步 题目描述 HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走 ...
- P2151 [SDOI2009]HH去散步
题目描述 HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又因为HH是个喜欢 ...
- 洛谷 P2151 [SDOI2009]HH去散步
题目链接 思路 如果没有不能走上一条边的限制,很显然就是dp. 设f[i][j]表示到达i点走了j步的方案数,移到k点可以表示为f[k][j+1]+=f[i][j]. 如果有限制的话,可以考虑用边表示 ...
- [bzoj1875] [洛谷P2151] [SDOI2009] HH去散步
Description HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但 是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又 ...
- Luogu P2151 [SDOI2009]HH去散步 矩乘加速DP
思路:矩乘优化DP 提交:3次(用了一个奇怪的东西导致常数过大) 题解: 如果可以走完正向边后又走反向边那就显然了,但是不能走,所以我们要将正反向边分别编号,区分正反向边. 所以这道题的矩阵是以边的编 ...
- AC日记——[SDOI2009]HH去散步 洛谷 P2151
[SDOI2009]HH去散步 思路: 矩阵快速幂递推(类似弗洛伊德): 给大佬跪烂-- 代码: #include <bits/stdc++.h> using namespace std; ...
- BZOJ_1875_[SDOI2009]HH去散步_矩阵乘法
BZOJ_1875_[SDOI2009]HH去散步_矩阵乘法 Description HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但 是同时H ...
- bzoj 1875: [SDOI2009]HH去散步 -- 矩阵乘法
1875: [SDOI2009]HH去散步 Time Limit: 20 Sec Memory Limit: 64 MB Description HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走, ...
- bzoj1875: [SDOI2009]HH去散步
终于A了...早上按自己以前的写法一直WA.下午换了一种写法就A了qwq #include<cstdio> #include<cstring> #include<iost ...
随机推荐
- 2025.3.24 DP专题
题目按照主观难度增序排列 Luogu P1758 [NOI2009] 管道取珠 有上下两个长度分别为 \(n,m\) 的管道 \(a,b\),管道中有两种不同颜色的球用 \(A,B\) 表示.现在每次 ...
- RPC实战与核心原理之路由策略
路由策略:怎么让请求按照设定的规则发到不同的节点上 回顾 健康检测在 RPC 中的作用,简单来讲就是帮助调用方应用来管理所有服务提供方的连接,并动态维护每个连接的状态,方便服务调用方在每次发起请求的时 ...
- codeup之沙漏图形
Description 问题:输入n,输出正倒n层星号三角形.首行顶格,星号间有一空格,效果见样例 输入样例: 3 输出样例: * * * * * * * * * * * 数据规模 1<= n ...
- 电脑tips #持续更新ing
记录日常get 1. Esc+ Fn 打开与锁住F1到F12功能键们 2. 没有找到支持的视频格式和MIME类型 场景:发生在网页嵌入的视频中 原因及解决:--网速不好,重新刷新解决 3. 问题描述: ...
- java返回数据库中层级结构数据的treeListMap写法,以动态菜单为例
说明 1.treeListMap写法,与纯算法版本比起来,treeListMap版的缺点是会查询多次数据库,而纯算法只会查询一次数据库 2.里面有不同角色分配不同的菜单相关代码,注意复制粘贴. 3.可 ...
- SAP STRANS 导出EXCEL
第一次用strans是2014年,第二次就是2017年...最近看到有人在问EXCEL双表头的问题,想着就把STRANS导出EXCEL的方法保存下来吧.方便大家参考. 1.已经记不清到底改做哪些类型的 ...
- linux(Ubuntu22.04)二进制安装mysql及redis
安装MySQL 1.下载mysql安装包 https://downloads.mysql.com/archives/community/ 解压压缩包 tar xf mysql-8.0.30-linux ...
- [书籍精读] 《你不知道的JavaScript(上卷)》精读笔记分享
写在前面 书籍介绍:JavaScript这门语言简单易用,很容易上手,但其语言机制复杂微妙,即使是经验丰富的JavaScript开发人员,如果没有认真学习的话也无法真正理解.本套书直面当前JavaSc ...
- 接口设计的原则:构建优雅API的完整指南
接口设计的原则:构建优雅API的完整指南 在软件开发中,接口就像建筑的地基,设计得好坏直接决定了整个系统的稳定性和可维护性.一个优秀的接口设计不仅能提升开发效率,还能降低系统复杂度,让代码更加健壮.今 ...
- Java 通用对象数值比较方法
前言 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i. 提示:以下是本篇文章正文内容,下面案例可供参考 说明 主要用于比较两个对象是否相等,特别处理了数值类型的比较(包括字符串形式的数值) ...