关于 K 维空间中整点之间曼哈顿距离最短路径计数问题

约定

K 维空间中,整点的坐标以 K 个整数表示,形如

Point(X1,X2,,Xk)

定义两个点的曼哈顿距离为 每一维坐标差的绝对值之和,记为

MD(A,B)=i=1K|XiAXiB|

定义两个点 A , B 相邻 当且仅当满足

MD(A,B)=1

最短路径计数

每次只能移动到相邻的点,容易发现 ST 的曼哈顿距离最短路径可能经过的点构成了一个 K 维方体,而 ST 正为此方体相对的两个顶点。

三维空间中示意图如下:

S->T

我们定义在第 i 维坐标上 ±1 为操作 i,显然的是,需要什么操作及具体个数是已知的,总数为

MD(S,T)

那么一条路径就可以转换成一个操作序列,不同的路径数量等价于本质不同的序列数量。
两个序列本质不同当且仅当至少存在一个位置上的操作编号不同。

显然在排列中,同样的操作本质不同,但实际上,它们是相同的,所以需要去重。

则总方案数为

MD(S,T)!Πi=1K(|XiSXiT|!)

扩展

假定在此 K 维空间中,存在一些整点是不能经过的(保证不为 ST),那么 ST 的最短路径数量会有什么变化呢?

我们称不能经过的点为 标记点
并定义两个点之间不经过标记点的最短路径条数为

AMDC(A,B)

在不考虑标记点时,

AMCD(A,B)=MD(A,B)!Πi=1K(|XiAXiB|!)

同时令

fi=AMDC(S,i)

显然,真正对我们有用的只有 K 维方体内的标记点和 T 点的 f 值,考虑 DP 转移。

那么,A 点对 B 点的 f 造成影响的充要条件是什么?
可以发现为

xiAxiB(x|x[1,K])

也就是 K 维偏序

所以

fi=AMDC(S,i)jg(j,i)×fj×AMDC(j,i)

其中,

g(A,B)={1xiAxiB(x|x[1,K])0otherwise.

满足 g(S,T)=1

用到了一点小容斥。
可以画一下二维空间中的图来帮助理解。

如有任何问题请私信作者 @qkhm

作者:qkhm

出处:https://www.cnblogs.com/qkhm/p/kth.html

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

posted @   qkhm  阅读(129)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示