省选模拟

D1T1 (5274)

对于区间 \([l,r]\) 上的一次操作,只可能有两种情况。

  • \([l,r]\) ,高度为当前最小值。贪心证明。
  • 最小值所在位置分 \([l,r]\) 为两个区间,对其中一个区间操作。子区间也可能再次被分割,需要递归处理。

(由于操作次数限制,策略需要进行“一定程度的贪心”,不总是第一种情况。)

\(f[i][j][k]\) 表示区间 \([i,j]\)\(k\) 次的最大收益。上述讨论说明转移无需枚举中间点,只要按最小值拆为两个区间并递归转移。

D2T1 (5277)

所有合法路径经过的格子是一个连通块,分别从左上和右下BFS可以求出。连通块的左下边界和右上边界是两条“临界路径”,如果它们在某一格相交,说明这里是必经之路,只要占据就必定不存在合法路径。这是第一类。

还存在另一种可能。此时,两个格子一定会分别占据两条“临界路径”(反证法证明)。不妨设占据左下路径,使它不合法,产生一条新的“临界路径”。若新路径与右上路径产生交点,将其封锁。

考虑如何求出新的临界路径。

按照 \(x+y\)\(a[x][y]\) 分层。占据 \(a[x][y]\) 时,在 \(x+y\) 层,新路径必须找到一个新点经过。这个点应尽量偏左下,并且在连通块内,可以暴力求出。

现在已经确定新路径的一个点,以这个点按照求左下路径的策略拓展,就是新的临界路径。当有一点与之前的路径相同时,之后的路径都相同,不产生贡献,可以退出。

posted @ 2021-02-23 15:13  _wkjzyc  阅读(49)  评论(0)    收藏  举报