1 条题解
-
2
容易发现老鼠一旦向下走,后面的操作是完全固定的(可预处理的)。
关键矛盾在于老鼠向上走的过程中管理员可以留后手滞后操作(攒着不用但是关键时刻阴他一手,这是基于两者都足够聪明这一条件)。
这个条件太难刻画了,不知道管理员的后(大)手会怎么删边。
某人似乎想到了用背包分配但是很快发现是 的。
于是考虑解决问题->判定问题。
管理员能否p次操作达成,可以二分。
我们认为操作分为两种:
- 固定操作:当老鼠决定从某一点往下跳,之后的操作数是固定的,也就是先封死,再删掉从这里到根的所有岔路,再擦除。具体的:维护 表示从 节点的父亲走到这个节点,最少需要多少操作才能把老鼠逼回 .(封死),再维护 表示上面需要砍多少个分叉,最后根据是否是根决定是否还有一步擦除(从 的气味)。
- 动态可滞后操作:解决这个问题的关键,在老鼠向上跳的时候积累的操作机会,用于封死某一步老鼠试图取得的更优解。
每次向上跳一步意味着管理员积累了一次可以滞后的操作。
如果当前跳到的节点的某一个儿子的固定操作数大于 check 的 p,就消耗 q 积攒的操作封死这个儿子,再向上跳。如果某次不够封了返回 false。
信息
- ID
- 678
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 6
- 已通过
- 1
- 上传者