树链剖分
WWL0702
这个作者很懒,什么都没留下…
展开
-
luogu P2486 [SDOI2011]染色 解题报告
P2486 [SDOI2011]染色 题目分析: 这题看似很诡异,求的不是不同颜色的数量,而是颜色段的数量,可是仔细一想,这不就是个区间合并吗,记录区间的左右端点颜色,当合并的时候,假如左儿子的右端点和右儿子的左儿子相同,总数-1,然后其他部分标准的树链剖分,直接粘了之前的代码,就把线段树的部分重新写了下 反思:查询操作的时候,想复杂了,其实一个flag标记一下当前是否旋转了即可,假如旋转了,就代表线段树查的是反的,合并的时候记得先交换下左右端点颜色即可,一开始写的老复杂了,又是记录端点,又是判断上一条链原创 2020-11-09 21:15:12 · 135 阅读 · 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 · 327 阅读 · 1 评论