随笔分类 - BZOJ
摘要:把式子拆开后把min的部分放到右边 求出每个人的 S = A height + B speed 一个按 S 排序,一个按 speed 排序 然后枚举最小 speed 和最小 height,符合条件的是一个区间 双指针扫一下即可
阅读全文
摘要:$dp_{i,j,0}$ 表示 $[i,j]$ 中不包含 $M$ 的最优值 $dp_{i,j,1}$ 表示 $[i,j]$ 中包含若干个 $M$ 的最优值 $dp_{i,j,0}=\min\{dp_{i,k,0}+j k\}$ 若 $[i,j]$ 是一个复制的串,$dp_{i,j,0}=\min\{
阅读全文
摘要:最大面积一定出现在凸包上 先求出凸包,再枚举对角线,剩下的两个点用旋转卡壳得到
阅读全文
摘要:先跑一次dijkstra得到每个点到 $1$ 的最短路 然后按海拔跑最大生成树得到kruskal重构树 那么一个点在能开车到的地方就是对应海拔高于 $p$ 的最高的点的子树 然后取子树中dis的min即可
阅读全文
摘要:太菜了太菜了 点分治都不会写了 求一条路径长度不超过 $K$,且价值最大 点分治 遍历重心的每一个子树,得到一个子树之后先将 $(dep,val)$ 进行排序,然后 $dep$ 和 $val$ 必须同时增加,所以就是取 $val$ 的前缀 max 然后得到一个子树排好序的 $(dep, val)$
阅读全文
摘要:最小值就一个点全部是出边,相邻的点都是入边,这么一直排下去,答案就是 $n 1$ 最大值就选重心,每个子树要么全是出边要么全是入边 每个子树里的答案已经确定了,子树之间若有 $x$ 个是出边,就有 $n x 1$ 个是入边 经过重心的答案就是 $x(n x 1)$ 相当于有子树个物品,每个物品的大小
阅读全文
摘要:kruskal重构树 因为建出来的树有大根堆性质,而且kruskal过程是优先考虑短的边的 所以LCA处的值一定是最短的最长边
阅读全文
摘要:如果知道kruskal重构树这个东西就很简单了。 kruskal重构树就是kruskal的过程中,不直接连 $(u, v)$,而是新建一个节点作为 $u$ 和 $v$ 的父亲,并且边权赋在这个点上 这样就得到一棵二叉树(或者森林) 有大根堆的性质 然后倍增预处理祖先,每次询问就是跑到最高的一个祖先,
阅读全文
摘要:支持离线 边和询问都按权值排序,然后扫描线对每一条边进行处理,将小于等于当前询问权值的边进行处理 加入一条边相当于合并两个连通块,用并查集维护根,线段树合并两个根处的线段树即可 查询就在根查询权值线段树的第 $k$ 大 把递归版的线段树换成循环的trie的写法,跑得更慢了。。
阅读全文
摘要:分治无法快速维护,考虑分块 $f_{i,j,k}$ 表示第 $i$ 块到第 $j$ 块之间权值为 $1$ 到 $k$ 的答案,$c_{i,j,k}$ 表示第 $i$ 块到第 $j$ 块之间权值为 $k$ 的个数 预处理及回答询问时,新加入一个颜色为 $k$ 的点对答案的贡献为 $2 cnt_k +
阅读全文
摘要:预处理一下前缀后缀最大值 每次用set贪心取一个合适的数 然后枚举分割点 有可能两次都取了同一个数 $x$,而 $y$ 没被取到 若 $x y$,那么就可以在点数小的那一轮拿 $y$ 替换 $x$ 若 $x inline int _i() { int x = 0, f = 1; char ch =
阅读全文
摘要:太久不写网络流/费用流已经忘得差不多了。 把每个技术人员拆成 $n$ 个点,表示倒数第 $i$ 个去修某辆车 那么在它之后修的车就得加上它的时间,所以费用就是 $i w$ 所以就是每个顾客 $x$ 向 $(i, j)$(第 $j$ 个技术人员倒数第 $i$ 个修某辆车) 连一条容量为 $1$,费用为
阅读全文
摘要:解法一:整体二分 用支持区间加区间查询的bit可降低时空常数
阅读全文
摘要:问题即求每个节点的子树内,按权值从小到大排序,前 $k$ 个 $c_i$ 加起来不超过 $m$,求 $\max \{k l_u \}$ 可以想到左偏树能快速维护子树内所有权值的大小关系 每个节点维护一个大根堆,然后合并和子树的堆 先把所有值都给加上,当它们大于 $m$,就一个一个pop,直到小于等于
阅读全文
摘要:计算序列的逆序对,交换相邻两个位置只会影响它俩是否产生逆序对,和其他位置的大小关系无关 交换相邻两段同样只影响这两段之间形成的逆序对 那么对每一个节点开一棵权值线段树,维护它的子树内有哪些权值 然后线段树合并,将两个儿子的线段树合并到父亲的身上 合并左右的时候就考虑会怎样产生逆序对 假设左儿子为 $
阅读全文
摘要:并查集加线段树合并 直接对两个集合的根合并,查询也在并查集的根上查,这样就不需要可持久化了
阅读全文
摘要:关于维护每个节点子树里某些东西的手段有:转化为dfs序的一个区间、dsu on tree(树分块?树上莫队?) 还有一个就是线段树合并 这个题就很nb 对每个节点开两个权值线段树 第一个线段树维护每个深度出现的颜色种类数,每种颜色只在最浅深度起贡献 第二个线段树维护每种颜色出现的最浅深度 维护方法就
阅读全文
摘要:我以为有多组数据,原来第一个数是数据编号,绝了 只有连边操作,启发式合并即可。 然后就是主席树裸题了。 空间要开大一点,因为主席树我不知道怎么回收空间。。
阅读全文
摘要:即求一个 $k$ 和 $c$,使得 $\sum\limits_{i=1}^n(x_i+c y_{(i+k)\bmod n})^2$ 最小 把式子拆开得到 $nc^2+2(\sum x_i y_{(i+k)\bmod n})c 2\sum x_iy_{(i+k)\bmod n}$ 当 $c=\dfra
阅读全文
摘要:两种贡献不会同时产生,分开考虑两种贡献 记 $pre_i$ 为 $i$ 之前第一个大于 $a_i$ 的数,$suf_i$ 为 $i$ 之后第一个大于 $a_i$ 的数,可以单调栈预处理出来 对于第一种贡献 1. $i$ 会对 $i + 1$ 产生 $p_1$ 的贡献 2. $i$ 会对 $pre_i
阅读全文

浙公网安备 33010602011771号