Skip to content

Latest commit

 

History

History
13 lines (7 loc) · 1.22 KB

grand-prix-of-poland.md

File metadata and controls

13 lines (7 loc) · 1.22 KB

XIX Open Cup. Grand Prix of Poland

M. Magical Maze

题意:给出一个$n \times m$的格子,也给出相邻两个格子的能够通行的方向,保证这个图构成了一个DAG。显然求出这样的格子对$(p,q)$的个数:$(1,1)$能够到达$p$,$p$能够到达$q$,$q$能够到达$(n,m)$。

$1 \le n \times m \le 500000$

题解:首先可以把$(1,1)$不能到点和不能到$(n,m)$的点都删除掉,那么这样就有了一个平面上的有向图。对于每个点$p$,$q$的个数就是$p$能够到达的点个数。考虑这个平面图,我们从$p$出发,根据左手规则沿着墙可以走出一条到$(n,m)$的路径;然后根据右手规则沿着墙也可以走出一条路径。显然这两条路径构成了一条闭合的曲线,在曲线内部的点都是$p$可以到达的。显然可以考虑用类似梯形剖分的方法来求内部点个数,当往右走的时候减去下方点个数,当往左走的时候加上下方点个数。可以发现,然后这个是可以加上记忆化来dp的。

枚举一个点$p$的时候,会有两种走法,枚举一下,取最大的作为答案即可。