潍泰联测好题集锦

minosi

题意:有一个 n×m 的矩阵,每个格子有黑白两种颜色。所有黑色的格子只能从左方或上分进入,白色格子只能从右方或下方进入。求是否能走恰好 k 步从 (1,1) 走到 (n,m)n×m300,k106

做法一

可以直接 O(nmk) DP。令 f[k][i][j] 表示从 (1,1)k 步是否能走到 (i,j),则

f[k][i][j]={f[k1][i1][j] or f[k1][i][j1](i,j) is blackf[k1][i+1][j] or f[k1][i][j+1](i,j) is white

空间上可以使用滚动数组优化掉第三维。

这种做法虽然可以通过,但没有达到极限。我们可以考虑将格子从 1nm 按正常顺序编号(即 (i,j)(i1)m+j),则设 f[k][x] 表示恰好走 k 步是否能做到编号为 x 的节点。转移类似,用编号法表示一下即可:

f[k][x]={f[k1][x1] or f[k1][xm](i,j) is blackf[k1][x+1] or f[k1][x+m](i,j) is white

这样的好处是什么呢?由于 f 的值只能为 0/1,所以我们可以使用 bitset 来存某一个 k 的所有位置的可达性,则对于所有黑格子,f[k]=(f[k1]>>1)|(f[k1]>>m),白格子类似。

对于黑白格子的区分,预处理两个 bitset 表示格子颜色,需要提取某种颜色时按位与一下即可。还有一点需要注意,就是判断格子的边界。无法从上一行的最后一列转移到这一行的第一列,特殊处理一下即可。时间复杂度 O(nmkω)

做法二

倍增优化传递闭包。

未完待续...

carpet

题意:平面上有 n 个矩形(通过左下角和右上角坐标描述),求有多少面积被至少 n1 个矩形覆盖。T5,n3×105,0val109

posted @   曹轩鸣  阅读(11)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起