/ Vijos / 题库 / 棋局 /

题解

1 条题解

  • 0
    @ 2021-12-07 18:41:14

    暴力就是分4次,每次只考虑一种边bfs即可。时间复杂度O(nmq),期望得分24~32分。

    只有普通道路的情况直接查询4个点即可。期望得分8分。

    没有互通道路的情况,用并查集维护一个点上下左右能走到的最远点,能吃到棋子最多4个,暴力检验即可。期望得分12分。

    结合上述 做法可以获得52的高分。

    满分做法:

    首先时间倒流,变为合并问题。

    对于每个3道路构成的连通块,用线段树按照等级维护它周围的棋子。

    同时,用并查集维护联通块的点数。

    合并时进行线段树合并或启发式合并即可。注意一个点没有棋子后要把它从周围的线段树中删除。

    同时注意相同位置上的棋子合并时不要算重,这个可以在叶子结点使用set实现。

    对于2道路的问题,还是用并查集维护一个点上下左右能走到的最远点。

    查询时,分为不吃与吃两种情况:

    不吃:把3和2的点数加到一起,然后把重复的减去。

    这个需要对每个联通块,每行开一个线段树,按照列维护。列的线段树同理。加点时线段树合并即可。

    吃:直接在联通块维护的线段树上查询前缀和即可。

    使用1,2道路的最多有8个点,暴力计算有几个不能只通过3道路吃掉即可。

    注意代码复杂度较高。

  • 1

信息

ID
2415
难度
(无)
分类
数据结构 | 线段树并查集 点击显示
标签
递交数
0
已通过
0
通过率
?
上传者