摘要: 【P5586】题解 一:【题意】 六种操作:序列求和,赋值,加k,区间复制,区间交换,区间翻转 二:【解法】 对于1,2,3,5,6操作我们可以用文艺平衡树解决,但4区间复制显然不可以 这里解释为什么,如果直接传节点编号,则以后修改其中一个区间,则另一个区间会被联动修改 如果复制一颗平衡树,复杂度显 阅读全文
posted @ 2026-01-04 14:33 Ming3398 阅读(11) 评论(0) 推荐(1)
摘要: P3369 普通平衡树 无旋treap最基本的三个函数spirit,merge,kth,其他函数都基于这三个函数操作的 点击查看代码 #include<bits/stdc++.h> using namespace std; const int N=1e5+10; mt19937 rnd(time(0 阅读全文
posted @ 2025-12-31 16:09 Ming3398 阅读(6) 评论(0) 推荐(1)
摘要: 主要用于优化与深度有关的dp 主要思想,与长儿子共用dp空间,暴力合并短儿子 每个节点只有在链头会被暴力合并一次,所以总时间复杂度为O(n) CF1009F板子 阅读全文
posted @ 2025-12-31 09:53 Ming3398 阅读(14) 评论(0) 推荐(1)
摘要: 【CF1009F】题解 一:【题面】 略 二:【解法】 dp[u][i]=sum(dp[v][i-1]) 长链剖分优化 三:【代码】 #include<bits/stdc++.h> using namespace std; const int N=1e6+10; vector<int> mp[N]; 阅读全文
posted @ 2025-12-31 09:53 Ming3398 阅读(8) 评论(0) 推荐(1)
摘要: include<bits/extc++.h> 或 #include<ext/rope> using namespace __gnu_cxx; rope b;rope a=b;//O(1),因此可做可持久化 其他操作复杂的O(logn)~O(sqrt(n)),因此可做块链 P1383 P3391 阅读全文
posted @ 2025-12-30 15:11 Ming3398 阅读(11) 评论(0) 推荐(1)
摘要: 【P3605】题解 一:【题意】 略 二:【解法】 对于每个节点暴力合并儿子子树的权值序列,得到自己子树的权值序列, 容易想到可以用线段树合并加速,然后询问即可 三:【代码】 (施工中) 阅读全文
posted @ 2025-12-29 16:00 Ming3398 阅读(9) 评论(0) 推荐(1)
摘要: 【P4556】题解 一:【题面】 略 二:【解法】 树上差分,暴力累加后缀 可以用线段树合并优化累加速度 三:【代码】 #include<bits/stdc++.h> #define inf 1e9 using namespace std; const int N=1e5+10; vector<in 阅读全文
posted @ 2025-12-29 15:18 Ming3398 阅读(18) 评论(0) 推荐(1)
摘要: 参考 当前节点a,b都存在,合并继续递归,否则直接取存在节点的编号 单次合并时间复杂度O(MlogV),M为相同节点个数,V为值域 总合并时间复杂度一般为O(VlogV) P4556 阅读全文
posted @ 2025-12-29 15:18 Ming3398 阅读(11) 评论(0) 推荐(1)
摘要: 第一维扫描,第二维数据结构 应用范围:面积并,周长并,二维数点 面积并 P5490 #include<bits/stdc++.h> #define int long long using namespace std; const int N=2e5+10; struct Line{ int x,l, 阅读全文
posted @ 2025-12-29 08:28 Ming3398 阅读(4) 评论(0) 推荐(1)
摘要: 【P3769】题解 一:【题意】 略 二:【解法】 dp[i]=max(dp[j]+1),a[j]<=a[i],b[j]<=b[i],c[j]<=c[i],d[j]<=d[i] 四维偏序,CDQ套CDQ 三维偏序等价于将{a,b,c}转化为{0/1,b,c} 那么四维偏序等价于将{a,b,c,d}转 阅读全文
posted @ 2025-12-27 10:01 Ming3398 阅读(3) 评论(0) 推荐(0)