点分治
文章平均质量分 63
ljq真的不能再吃了
珍惜每一天
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Codeforces Global Round 13 A-E题解
A 01序列,一个操作对某一位取反,一个操作问你当前第k大是多少 维护一个当前最后一个1所在排名 #include <cstdio> using namespace std; const int MAX_N = 100025; int arr[MAX_N]; int main() { int n,m,sum = 0; scanf("%d%d",&n,&m); for(int i = 1;i<=n;++i) { scanf("%原创 2021-03-02 13:42:52 · 425 阅读 · 0 评论 -
淀粉质(点分治)简单食用指南
第一次学点分治是去年的九月份。 到现在已经一年了。 今天希望通过这篇博客让大家都能好好吸收淀粉质。 首先我们要知道分治是什么 天下大势 分久必合 合久必分 什么是合?什么是分? 给你一棵树长这样 我们发现上面有重心两个字 重心真是一个好的性质 关于为什么选重心可以观看 漆子超的论文 这样我们对第一个重心处理出所有路径 然后发现 路径有图上六条 我们需要两两合并 就像A - D 和 A - B合并 ...原创 2019-09-16 21:15:09 · 257 阅读 · 0 评论 -
【CF293E. Close Vertices】点分治 + 树状数组
CF293E 现在有一棵树,每条边的长度都为1,然后有一个权值,求存在多少个(u,v)点对,他们的路径长度 <= l, 总权重 <= w. 观察到边权长度都是 1 所以我们可以对路径的长度建立树状数组每次查询区间内满足的w即可 //现在有一棵树,每条边的长度都为1,然后有一个权值,求存在多少个(u,v)点对,他们的路劲长度 <= l, 总权重 <= w. /* if...原创 2019-09-16 20:51:17 · 230 阅读 · 0 评论 -
【Codeforces161D Distance in Tree】点分治
codeforces161D 对于这种题我们一般都是直接遍历 因为直接遍历的桶通常比较小 比较优秀 /* if you can't see the repay Why not just work step by step rubbish is relaxed to ljq */ #include <cstdio> #include <cstring...原创 2019-09-16 19:36:32 · 167 阅读 · 0 评论 -
【P4149 [IOI2011]Race】点分治
P4149 cnt[i] 代表路径和为 i 需要的最少边数 那么我们update只要加边update就行 , 如果Clear就是删一条边的影响 然后去重复影响 注意cnt数组要开1000000 /* if you can't see the repay Why not just work step by step rubbish is relaxed to ljq ...原创 2019-09-16 15:49:18 · 190 阅读 · 0 评论 -
【POJ1741】 点分治
POJ1741 和上一篇博客蛮像的 问的是小于等于k的有多少个 /* if you can't see the repay Why not just work step by step rubbish is relaxed to ljq */ #include <cstdio> #include <cstring> #include <...原创 2019-07-14 15:25:35 · 158 阅读 · 0 评论 -
【洛谷P3806 【模板】点分治1】点分治
P3806 其实点分治去年学过 但是去年只学了个皮毛 所以这次又重新写一篇题解 尽可能写的详细 首先我们要清楚点分治的本质 在我看来 点分治通常是在树上操作 虽然名字叫做点分治 但是本质在我看来是树分治 你可以通过找到一个点 来把树划分层次 通过对不同子树的操作来统计答案 网上对于点分治的讲解还蛮多的 希望这次自己能理解通彻点分治 /* if you can't see the repay...原创 2019-07-14 15:04:33 · 182 阅读 · 0 评论 -
codeforces 321 C Ciel the Commander 点分治
cf 321 C 题意 给你一棵树 它的边 叫你赋上点值 A最大 然后要你两个相同的点值中间要有个高的 比如B和B中间要有个A 样例1 就是这个意思 我们怎么考虑呢 你既然要有个高的 那么我只要每次重心设置能没出现过的最高的值 这样就可以分成两块 所以接下来的两块可以继续这样弄 最多2^26 >1e5 所以肯定是有答案的 不会有impossible 具体看代码吧 /* code...原创 2018-09-26 16:44:30 · 286 阅读 · 0 评论 -
洛谷P3806 点分治1
点分治1 如果给你一个查询 那就是裸的点分治 但是给你m个查询 你该咋办呢 不妨在查询之前先处理好所有可能出现的边 然后在线查询就行 总根进行++操作 消除子树的影响 进行--操作 具体可以看代码吧 /* luogu 3806 */ #include <cstdio> #include <cstring> #include <queue> #incl...原创 2018-09-26 12:16:39 · 203 阅读 · 0 评论 -
POJ 1741 Tree 点分治
POJ 1741 一道点分治模板题 树上距离小于等于k 实际上由于是最短距离 我们在统计上级子树的时候容易把下面子树内的情况考虑进去 导致多选 所以要给下面子树加爸爸边的贡献 删除这些影响 这点也是点分治的精华所在 /* POJ 1741 */ #include <cstdio> #include <cstring> #include <queue> #i...原创 2018-09-26 10:30:19 · 135 阅读 · 0 评论 -
洛谷P2634 聪聪可可 点分治模板题
点分治 聪聪可可 这是一道点分治的模板题 但是一开始没有想到做法 题目要求的是满足树上两边相加等于3的情况 一开始有个很笨的思路 就是按i+=3去枚举 但是肯定超时 所以这道题其实是对树上距离%3 两边相加等于3的情况实际上是由模3后 为1 的边 乘上 模3后为2的边 其中可以互换 所以乘个2 再由sum[0]*sum[0] 包括了 0 3 , 3 0 ,3 3 ,0 0的情况 答案为这两...原创 2018-09-26 10:28:11 · 213 阅读 · 0 评论
分享