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. 递推就列表达式:

\[F_{n}[i, j]: i \to j 走n步的方案数
\]
\[F_{n}[i, j] = F_{n-1}[i, k] + F_{n-1}[k, j]
\]

3. 优化递推式:

不满足不两次都是来回走的限制,考虑加维 (怎么加?限制边不能再走,就加一维表示从哪条边来),而起点确定,可以把表达式优化成:

\[F_{n}[e, j] = \sum_{u \stackrel{pre}{\to} k \to j} F_{n-1}[pre, k]
\]

\(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去散步 题解(图论上的矩阵加速递推)的更多相关文章

  1. 「 洛谷 」P2151 [SDOI2009]HH去散步

    小兔的话 欢迎大家在评论区留言哦~ HH去散步 题目限制 内存限制:125.00MB 时间限制:1.00s 标准输入 标准输出 题目知识点 动态规划 \(dp\) 矩阵 矩阵乘法 矩阵加速 矩阵快速幂 ...

  2. 洛谷P2151 [SDOI2009] HH去散步 [矩阵加速]

    题目传送门 HH去散步 题目描述 HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走 ...

  3. P2151 [SDOI2009]HH去散步

    题目描述 HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又因为HH是个喜欢 ...

  4. 洛谷 P2151 [SDOI2009]HH去散步

    题目链接 思路 如果没有不能走上一条边的限制,很显然就是dp. 设f[i][j]表示到达i点走了j步的方案数,移到k点可以表示为f[k][j+1]+=f[i][j]. 如果有限制的话,可以考虑用边表示 ...

  5. [bzoj1875] [洛谷P2151] [SDOI2009] HH去散步

    Description HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但 是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又 ...

  6. Luogu P2151 [SDOI2009]HH去散步 矩乘加速DP

    思路:矩乘优化DP 提交:3次(用了一个奇怪的东西导致常数过大) 题解: 如果可以走完正向边后又走反向边那就显然了,但是不能走,所以我们要将正反向边分别编号,区分正反向边. 所以这道题的矩阵是以边的编 ...

  7. AC日记——[SDOI2009]HH去散步 洛谷 P2151

    [SDOI2009]HH去散步 思路: 矩阵快速幂递推(类似弗洛伊德): 给大佬跪烂-- 代码: #include <bits/stdc++.h> using namespace std; ...

  8. BZOJ_1875_[SDOI2009]HH去散步_矩阵乘法

    BZOJ_1875_[SDOI2009]HH去散步_矩阵乘法 Description HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但 是同时H ...

  9. bzoj 1875: [SDOI2009]HH去散步 -- 矩阵乘法

    1875: [SDOI2009]HH去散步 Time Limit: 20 Sec  Memory Limit: 64 MB Description HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走, ...

  10. bzoj1875: [SDOI2009]HH去散步

    终于A了...早上按自己以前的写法一直WA.下午换了一种写法就A了qwq #include<cstdio> #include<cstring> #include<iost ...

随机推荐

  1. 2025.3.24 DP专题

    题目按照主观难度增序排列 Luogu P1758 [NOI2009] 管道取珠 有上下两个长度分别为 \(n,m\) 的管道 \(a,b\),管道中有两种不同颜色的球用 \(A,B\) 表示.现在每次 ...

  2. RPC实战与核心原理之路由策略

    路由策略:怎么让请求按照设定的规则发到不同的节点上 回顾 健康检测在 RPC 中的作用,简单来讲就是帮助调用方应用来管理所有服务提供方的连接,并动态维护每个连接的状态,方便服务调用方在每次发起请求的时 ...

  3. codeup之沙漏图形

    Description 问题:输入n,输出正倒n层星号三角形.首行顶格,星号间有一空格,效果见样例 输入样例: 3 输出样例: * * * * * * * * * * * 数据规模 1<= n ...

  4. 电脑tips #持续更新ing

    记录日常get 1. Esc+ Fn 打开与锁住F1到F12功能键们 2. 没有找到支持的视频格式和MIME类型 场景:发生在网页嵌入的视频中 原因及解决:--网速不好,重新刷新解决 3. 问题描述: ...

  5. java返回数据库中层级结构数据的treeListMap写法,以动态菜单为例

    说明 1.treeListMap写法,与纯算法版本比起来,treeListMap版的缺点是会查询多次数据库,而纯算法只会查询一次数据库 2.里面有不同角色分配不同的菜单相关代码,注意复制粘贴. 3.可 ...

  6. SAP STRANS 导出EXCEL

    第一次用strans是2014年,第二次就是2017年...最近看到有人在问EXCEL双表头的问题,想着就把STRANS导出EXCEL的方法保存下来吧.方便大家参考. 1.已经记不清到底改做哪些类型的 ...

  7. linux(Ubuntu22.04)二进制安装mysql及redis

    安装MySQL 1.下载mysql安装包 https://downloads.mysql.com/archives/community/ 解压压缩包 tar xf mysql-8.0.30-linux ...

  8. [书籍精读] 《你不知道的JavaScript(上卷)》精读笔记分享

    写在前面 书籍介绍:JavaScript这门语言简单易用,很容易上手,但其语言机制复杂微妙,即使是经验丰富的JavaScript开发人员,如果没有认真学习的话也无法真正理解.本套书直面当前JavaSc ...

  9. 接口设计的原则:构建优雅API的完整指南

    接口设计的原则:构建优雅API的完整指南 在软件开发中,接口就像建筑的地基,设计得好坏直接决定了整个系统的稳定性和可维护性.一个优秀的接口设计不仅能提升开发效率,还能降低系统复杂度,让代码更加健壮.今 ...

  10. Java 通用对象数值比较方法

    前言 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i. 提示:以下是本篇文章正文内容,下面案例可供参考 说明 主要用于比较两个对象是否相等,特别处理了数值类型的比较(包括字符串形式的数值) ...