摘要:
同样是可以用LCT解决的树剖问题之一。 注意反转的时候要考虑对左右端点颜色的影响,而且要先反转再打标记(这点不知道为啥) 阅读全文
摘要:
LCT试炼题(代码量居然完爆树剖?) 阅读全文
摘要:
1 #include 2 #include 3 #include 4 using namespace std; 5 typedef long long ll; 6 const int N=1e6+10,M=26; 7 char s[N],s2[N]; 8 int n,f,k; 9 struct SAM { 10 int go[N][M],pre[N],mxl[N],c[... 阅读全文
摘要:
1 #include 2 #include 3 #include 4 using namespace std; 5 typedef long long ll; 6 const char* ss="ATCG"; 7 const int N=100+10,M=4,mod=100000; 8 int m,n; 9 char s[N]; 10 struct Mat { 11 i... 阅读全文
摘要:
题目链接 题意:统计树上每个结点中恰好出现了k次的颜色数。 dsu on tree/线段树合并裸题。 启发式合并1:(748ms) 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int 阅读全文
摘要:
题目链接 吉司机线段树裸题... 阅读全文
摘要:
题目链接 题意:在一条直线上依次建造n座建筑物,每座建筑物建造完成后询问它在多长的部分是最高的。 比较好想的方法是用线段树分别维护每个区间的最小值mi和最大值mx,当建造一座高度为x的建筑物时,若mi>x则答案无贡献,直接退出,若mx<=x则区间赋值为x,答案加上区间长度。其他情况需要继续递归搜索。 阅读全文
摘要:
题目链接 题意:n个人排成一列,一开始他们互不认识,每次选[l,r]上的人开party,使他们互相认识,求出每次party之后新互相认识的人的对数。 思路:把“互相认识”变成单向连边,只考虑左边的人对右边的贡献。对于每个人,他认识的人的区间必然是连续的,可以维护他认识的最右边的人R,这样更新操作相当 阅读全文
摘要:
题目链接 kd树+插入操作 不知为啥我的常数纳么大,加了快读才过的┐(゚~゚)┌ 阅读全文
摘要:
题目链接 splay: 无旋treap(FHQ-treap): 阅读全文