路径上每个格子把 X 与 Y 分入两个账户,对差值的贡献恰为 ±(X−Y)。因此 ∣S−T∣ 等于某条从 (1,1) 到 (N,M)(只向右或向下)的路径上,各格 ±(Xi,j−Yi,j) 之和的绝对值的最小值。
N,M≤80,路径长度不超过 N+M−1,每个 ∣X−Y∣≤80,可达差的绝对值不超过 80(N+M−1)。用 bitset 记录到达每个格子时所有可能的带偏移差分:令偏移 sh=80(N+M),从上方或左方转移时把集合整体左右平移 ∣X−Y∣。最后在终点集合中找离 0 最近的值。
时间复杂度 O(NM⋅w(N+M)V),其中 V=80,w 为字长。空间复杂度 O(NM⋅w(N+M)V)。
给定一张 N 行 M 列的评测格网。格子 (i,j) 上有两个通道分 Xi,j 与 Yi,j。
从 (1,1) 走到 (N,M),每次只能向右走到 (i,j+1) 或向下走到 (i+1,j),不可越界。
路径上每个格子(含起终点)须把 Xi,j 与 Yi,j 分别记入主账户与对照账户,二者各得其一。
设主账户合计为 S,对照账户合计为 T。求所有合法路径与分配方案下 ∣S−T∣ 的最小值。
输入共 2N+1 行。
第一行两个整数 N 和 M。
接下来 N 行,每行 M 个整数,表示 Xi,j。
再接下来 N 行,每行 M 个整数,表示 Yi,j。
1≤N,M≤80,0≤Xi,j,Yi,j≤80。
输出一行一个整数,即最小的 ∣S−T∣。
输入
2 2
4 1
2 5
2 3
6 1
输出
0
说明
路径 (1,1)→(1,2)→(2,2)。
(1,1):主账户记 2,对照账户记 4。
(1,2):主账户记 1,对照账户记 3。
(2,2):主账户记 5,对照账户记 1。
此时 S=8,T=8,∣S−T∣=0。
另一条路径 (1,1)→(2,1)→(2,2) 上,∣S−T∣ 至少为 2,更差。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册