模拟16 题解
A. Blue
贪心 完了。
这道题学到了很多使用stl set的技巧。
B. Weed
线段树维护栈的操作。
一个重要的操作是递归结束时$O(logn)$复杂度的向下寻找分界点。
因为延伸出的一定是一条链,复杂度是$O(nlog^2n)$
C. Drink
十字链表,维护每个点四个方向的$next$。
因为旋转操作,无法明确四个方向,只能保证四个方向仍然为顺时针。
然而表头的方向没有改变过,
通过last所在的方向,确定要到达的方向。
每次修改只修改边界上的节点。
应当注意的是,
如果在移动的同时修改,可能导致方向的错乱,于是整个链表都死了。
我的解决方法是将所有的操作压进栈里。
在完成四个方向的移动后,统一进行栈内的操作。