摘要:
~~~题面~~~ 题解: 在考场上打的这道题,出人意料的很快就打完了?! 直接用线段树,维护几个东西: 1,lazy标记 : 表示区间赋值 2,mark标记:表示区间翻转 3,l1:前缀最长连续的1的子段长度 4,l0:前缀最长连续的0的子段长度 5,m0:区间内最长的全为0的子段的长度 6,r0: 阅读全文
摘要:
~~~题面~~~ 题解: 首先我们要转化一下,因为直接求不好求。首先考虑一个点对z的贡献,观察这么一个图: 显然点x对点z的贡献为2,因为LCA的深度为2。LCA可以看做点x和点z分别走向root的两条路径中第一个重合的点,因此,如果我们给x到root的路径上的点都赋1的点权,那么再从z往上走, 因 阅读全文
摘要:
~~~题面~~~ 题解: 题目要求统计一个区间内数值在[a, b]内的数的个数和种数,而这个是可以用树状数组统计出来的,所以可以考虑莫队。 考虑区间[l, r]转移到[l, r + 1],那么对于维护个数的树状数组就直接加即可。 对于维护种数的树状数组,我们额外维护一个数组num,表示数a在区间内出 阅读全文