这几天主要看博客,首先看的是LCLS这道题,题目大意是给n个数,动态地修改某个数的值,或者查询一段区间的
最长连续上升子序列,简单的线段树,每个点维护一个区间的从左边开始的最长的上升子序列,从右边开始的最长的上升子序列,这个区间最大的上升子序列。对线段树进行操作就可以了。然后看Sequence operation这道题,是一道线段树成段更新,查询连续目标子串长度的题,大意是有0,1,2三种操作,0代表将区间内全部变为0,1代表区间内全部变为1,2代表区间内0,1取反 3,4代表查询,3代表查询区间内1的总数,4代表查询区间内最长连续1的个数,困难的主要是2和4的操作,2操作不是单纯的覆盖,而是和先前的线段状态取反,这个操作和直接覆盖不一样,如果线段的状态是0或1,且完全被要更改的区间覆盖,这时才可以直接异或操作一个,当线段的状态是-1无论如何都改不了,要递归深入到儿子中,直到其的状态是0或1才可以更改。4操作感觉这个操作最复杂,因为每次更改了线段的信息,就要自底向上维护好左,右,中间连续1的最大长度的值,维护这三个域。感觉这一道题,线段树的所有操作都用到了,可以说对我来说是是一个大升华。