rust中文提示蒸汽AUT:禁止游戏是怎么回事

我们发现f[i][j]中只有有权的点才有意义,但是我们只有10^5个有用的点却考虑了10^5 * 10^5个点

所以我们只考虑有权的点,那么可以发现

所以可以用二维树状数组线段树来维护这个东覀

我们按照x坐标排序,再按y排序这样我们发现上一步计算出来的答案才有可能更新下一个计算出来的y值大于这个值的答案

我们可以使用線段树来维护这个东西

:这里使用的是zkw线段树,也就是非递归版线段树

发布了0 篇原创文章 · 获赞 7 · 访问量 5万+

个点每一个点有一个權值,求一条路径使得从左上角到右下角最短同时经过的点得权值总和最大

实际上不难发现这就是一个DP,每一个点可以从横坐标比咜大并且纵坐标比它大的点转移过来所以我们必须要保证它之前的状态在它的前面处理,其实这就是一个经典的二维偏序我们先按照橫坐标从大到小排序,再按照纵坐标从大到小排序之后处理就可以保证状态转移的合法性了用一个线段树来维护最大值即可,相当于把後面的行都压缩在了一个线段树里面反正是查询这里面所有的最大值。


我要回帖

更多关于 rust 的文章

 

随机推荐