上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 50 下一页
摘要: 简单题。 考虑枚举 LCA,显然 LCA 必然是 xxx 的祖先。 由于是完全二叉树,枚举 LCA 的复杂度显然是 O(log⁡n)O(\log n)O(logn) 的。 枚举之后,转化成子问题,求点 uuu 的子树中有多少个到 uuu 距离为 kkk 的点。 比较显然的,点 xxx 的子树中距离为 阅读全文
posted @ 2023-09-24 10:24 HappyBobb 阅读(15) 评论(0) 推荐(0)
摘要: 这不可撤销背包板子吗。 设 fif_ifi​ 表示凑出 iii 方案数。 加的时候加一下,删的时候减一下,注意两个循环顺序不一样,具体可以看代码理解。 #include <bits/stdc++.h> using namespace std; #define int long long const 阅读全文
posted @ 2023-09-24 08:44 HappyBobb 阅读(22) 评论(0) 推荐(0)
摘要: 一个有趣的结论是,一个图,选出若干个边集,满足他们的并为原图边集。则必有他们每个集合的 MST 的边的并,再求一次 MST 为原图的 MST。 考虑点分治,设当前重心为 uuu,设 dj=wj+dist(u,j)d_j = w_j + dist(u,j)dj​=wj​+dist(u,j),则有对于两 阅读全文
posted @ 2023-09-23 12:17 HappyBobb 阅读(20) 评论(0) 推荐(0)
摘要: 这为啥有 *3100。 考虑询问本质上在干什么。 树上两点之间边权最大值,相当于两点在 Kruskal 重构树(边权从小到大排序)上 LCA 的点权。 设 li,jl_{i,j}li,j​ 表示重构树上 iii 与 jjj 的 LCA,valival_ivali​ 表示重构树上 iii 的点权。 于 阅读全文
posted @ 2023-09-22 21:59 HappyBobb 阅读(16) 评论(0) 推荐(0)
摘要: 题意相当于,对 [l,r][l,r][l,r] 建出大根笛卡尔树后,求每个点的子树大小的和。 考虑点 iii 的子树大小的意义是什么?笛卡尔树上每个点的子树的编号连续。 设 LiL_iLi​ 表示 iii 左边第一个大于 aia_iai​ 的位置,RiR_iRi​ 表示右边第一个大于 aia_iai 阅读全文
posted @ 2023-09-21 21:08 HappyBobb 阅读(18) 评论(0) 推荐(0)
摘要: 与最小值相关,考虑求出每个点左右两边第一个小于这个数的点。可以用笛卡尔树或者单调栈维护。 设 fif_ifi​ 表示以 iii 为右端点的所有区间的最小值之和。考虑如何转移 fif_ifi​。 设 iii 左边第一个小于 aia_iai​ 的位置为 preipre_iprei​,则 fi=fprei 阅读全文
posted @ 2023-09-18 21:54 HappyBobb 阅读(12) 评论(0) 推荐(0)
摘要: Kruskal 重构树板子。 考虑建边权从大到小排序后跑 Kruskal 的重构树,对于当前点 uuu 和参数 www,只能走 ≥w\geq w≥w 边,即能去的点是 uuu 祖先中最浅的点权 ≥w\geq w≥w 的点所在子树内每个叶子节点。 发现边权修改后,相对大小不变,直接在重构树点权修改即可 阅读全文
posted @ 2023-09-17 18:04 HappyBobb 阅读(21) 评论(0) 推荐(0)
摘要: 典中典。 一个点集 SSS 的 LCA 是这些点中 DFS 序最小和最大的两点的 LCA。 所以必然只会删掉最大的或最小的。 线段树或 ST 表维护一下最大和次大,最小和次小就做完了。复杂度 O(nlog⁡n)O(n \log n)O(nlogn)。 阅读全文
posted @ 2023-09-17 12:56 HappyBobb 阅读(6) 评论(0) 推荐(0)
摘要: 感觉别人写的太复杂了。 用 set,维护当前在队列中的人。每次操作,如果有人,直接累加答案。 然后考虑怎么在 ti+sit_i+s_iti​+si​ 时间回来。只需要离线在 ttt 里面跑一个 lower_bound 即可。 #include <bits/stdc++.h> using namesp 阅读全文
posted @ 2023-09-17 12:53 HappyBobb 阅读(17) 评论(0) 推荐(0)
摘要: 最大流 最小割,所以这是最小割树板子。 最小割树的做法是,每次在当前集合中选两个点跑最小割,然后在树上连边,权值为最小割容量。 众所周知最大流可以求出割的方案,即从源点开始,只走没流满的边,能去的点就是和源点在一起的。 把两个点集分别做上述步骤,类似分治,复杂度 O(n3m)O(n^3m)O(n3m 阅读全文
posted @ 2023-09-09 19:07 HappyBobb 阅读(29) 评论(0) 推荐(0)
上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 50 下一页