上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 32 下一页
摘要: 最大面积一定出现在凸包上 先求出凸包,再枚举对角线,剩下的两个点用旋转卡壳得到 阅读全文
posted @ 2020-02-19 13:38 Mrzdtz220 阅读(87) 评论(0) 推荐(0) 编辑
摘要: 先跑一次dijkstra得到每个点到 $1$ 的最短路 然后按海拔跑最大生成树得到kruskal重构树 那么一个点在能开车到的地方就是对应海拔高于 $p$ 的最高的点的子树 然后取子树中dis的min即可 阅读全文
posted @ 2020-02-19 09:35 Mrzdtz220 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 太菜了太菜了 点分治都不会写了 求一条路径长度不超过 $K$,且价值最大 点分治 遍历重心的每一个子树,得到一个子树之后先将 $(dep,val)$ 进行排序,然后 $dep$ 和 $val$ 必须同时增加,所以就是取 $val$ 的前缀 max 然后得到一个子树排好序的 $(dep, val)$ 阅读全文
posted @ 2020-02-19 01:48 Mrzdtz220 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 最小值就一个点全部是出边,相邻的点都是入边,这么一直排下去,答案就是 $n 1$ 最大值就选重心,每个子树要么全是出边要么全是入边 每个子树里的答案已经确定了,子树之间若有 $x$ 个是出边,就有 $n x 1$ 个是入边 经过重心的答案就是 $x(n x 1)$ 相当于有子树个物品,每个物品的大小 阅读全文
posted @ 2020-02-18 22:16 Mrzdtz220 阅读(96) 评论(0) 推荐(0) 编辑
摘要: kruskal重构树 因为建出来的树有大根堆性质,而且kruskal过程是优先考虑短的边的 所以LCA处的值一定是最短的最长边 阅读全文
posted @ 2020-02-18 17:43 Mrzdtz220 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 如果知道kruskal重构树这个东西就很简单了。 kruskal重构树就是kruskal的过程中,不直接连 $(u, v)$,而是新建一个节点作为 $u$ 和 $v$ 的父亲,并且边权赋在这个点上 这样就得到一棵二叉树(或者森林) 有大根堆的性质 然后倍增预处理祖先,每次询问就是跑到最高的一个祖先, 阅读全文
posted @ 2020-02-18 17:27 Mrzdtz220 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 支持离线 边和询问都按权值排序,然后扫描线对每一条边进行处理,将小于等于当前询问权值的边进行处理 加入一条边相当于合并两个连通块,用并查集维护根,线段树合并两个根处的线段树即可 查询就在根查询权值线段树的第 $k$ 大 把递归版的线段树换成循环的trie的写法,跑得更慢了。。 阅读全文
posted @ 2020-02-18 14:28 Mrzdtz220 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 分治无法快速维护,考虑分块 $f_{i,j,k}$ 表示第 $i$ 块到第 $j$ 块之间权值为 $1$ 到 $k$ 的答案,$c_{i,j,k}$ 表示第 $i$ 块到第 $j$ 块之间权值为 $k$ 的个数 预处理及回答询问时,新加入一个颜色为 $k$ 的点对答案的贡献为 $2 cnt_k + 阅读全文
posted @ 2020-02-18 13:23 Mrzdtz220 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 预处理一下前缀后缀最大值 每次用set贪心取一个合适的数 然后枚举分割点 有可能两次都取了同一个数 $x$,而 $y$ 没被取到 若 $x y$,那么就可以在点数小的那一轮拿 $y$ 替换 $x$ 若 $x inline int _i() { int x = 0, f = 1; char ch = 阅读全文
posted @ 2020-02-18 09:09 Mrzdtz220 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 太久不写网络流/费用流已经忘得差不多了。 把每个技术人员拆成 $n$ 个点,表示倒数第 $i$ 个去修某辆车 那么在它之后修的车就得加上它的时间,所以费用就是 $i w$ 所以就是每个顾客 $x$ 向 $(i, j)$(第 $j$ 个技术人员倒数第 $i$ 个修某辆车) 连一条容量为 $1$,费用为 阅读全文
posted @ 2020-02-17 20:24 Mrzdtz220 阅读(67) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 32 下一页