abc 232 e 题解

abc 232 e

题意#

有一个 n×m 的矩阵,一开始有个物品放在 (x1,y1) 上。

k 次操作,每次操作可以将这个物品移动到同一行或者同一列的另一个格子上。

请你求出在 k 次操作后,使得这个物品到达 (x2,y2) 的方法有多少种,对 998244353 取模。

思路#

首先,这道题我们先考虑暴力。

dpx,y,k 表示走 k 步到格子 (x,y) 的方案数。

那么就有转移:

dpx,y,k=x=x,yydpx,y,k1+xx,y=ydpx,y,k1

所以,状态总数为 n×m×k,每次有 n+m 种转移,总时间复杂度为 O(n×m×k×(n+m)),也就是 1033,很明显会超时。

通过打表输出 dp 数组,我们可以发现,整个矩阵最后的结果一共可以分为四种:

  1. 起点

  2. 和起点同行的点

  3. 和起点同列的点

  4. 和起点不同行也不同列的点

所以,dpk,0 表示用 k 步走到起点的方案数,dpk,1 表示用 k 步走到与起点同行的其他的点的方案数,dpk,2 表示用 k 步走到与起点同列的其他的点的方案数,dpk,3 表述用 k 步走到和起点不同行也不同列的点的方案数。

那么,转移是什么呢?

我们可以画一个图来看一看。

dpk,0=dpk1,1×(m1)+dpk1,2×(n1)

dpk,1=dpk1,0+dpk1,1×(m2)+dpk1,3×(n1)

dpk,2=dpk1,0+dpk1,2×(n2)+dpk1,3×(m1)

dpk,3=dpk1,1+dpk1,2+dpk1,3×(n+m4)

所以,时间复杂度为 O(k)

作者:cn

出处:https://www.cnblogs.com/chengning0909/p/18422873

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   chengning0909  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2023-09-20 线性代数
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示