数据结构
文章平均质量分 97
WWL0702
这个作者很懒,什么都没留下…
展开
-
luogu P2486 [SDOI2011]染色 解题报告
P2486 [SDOI2011]染色 题目分析: 这题看似很诡异,求的不是不同颜色的数量,而是颜色段的数量,可是仔细一想,这不就是个区间合并吗,记录区间的左右端点颜色,当合并的时候,假如左儿子的右端点和右儿子的左儿子相同,总数-1,然后其他部分标准的树链剖分,直接粘了之前的代码,就把线段树的部分重新写了下 反思:查询操作的时候,想复杂了,其实一个flag标记一下当前是否旋转了即可,假如旋转了,就代表线段树查的是反的,合并的时候记得先交换下左右端点颜色即可,一开始写的老复杂了,又是记录端点,又是判断上一条链原创 2020-11-09 21:15:12 · 164 阅读 · 0 评论 -
树链剖分及进阶 边权化点权 luogu4315 luogu1505
树链剖分模板 点权 2遍dfs+线段树 #include <bits/stdc++.h> using namespace std; #define rep(i,a,n) for(int i=a;i<n;i++) #define per(i,a,n) for(int i=n-1;i>=a;i--) typedef long long ll; typedef double db; typedef pair<int,int> P; typedef vector<int&g原创 2020-11-04 19:15:45 · 359 阅读 · 1 评论 -
线段树题集--SPOJ GSS1~GSS8解题报告
GSS1 - Can you answer these queries I 第一题,主要处理不同区间里,最大值,从左边开始的最大值,从右边开始的最大值,总和 这4个点的合并即可,luogu之前做过和这题思路及其类似的就是我,这题也是线段树的题,不过侧重于维护区间连续1的长度,并且需要支持区间修改和区间查询,不过大概思路是可以借鉴的 那么回到本题,既然需要是查询某一段中最大的前缀和,那么就得想如何处理区间合并,假设现在左子区间和右子区间已经确定了最大前缀和,那这一段的最大前缀和,要么是左子区间的最大前缀和,.原创 2020-10-28 18:15:04 · 256 阅读 · 0 评论