点分治
文章平均质量分 63
ljq真的不能再吃了
珍惜每一天
展开
-
Codeforces Global Round 13 A-E题解
A01序列,一个操作对某一位取反,一个操作问你当前第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 · 241 阅读 · 0 评论 -
淀粉质(点分治)简单食用指南
第一次学点分治是去年的九月份。到现在已经一年了。今天希望通过这篇博客让大家都能好好吸收淀粉质。首先我们要知道分治是什么天下大势 分久必合 合久必分什么是合?什么是分?给你一棵树长这样我们发现上面有重心两个字 重心真是一个好的性质 关于为什么选重心可以观看 漆子超的论文这样我们对第一个重心处理出所有路径 然后发现 路径有图上六条我们需要两两合并 就像A - D 和 A - B合并 ...原创 2019-09-16 21:15:09 · 193 阅读 · 0 评论 -
【CF293E. Close Vertices】点分治 + 树状数组
CF293E现在有一棵树,每条边的长度都为1,然后有一个权值,求存在多少个(u,v)点对,他们的路径长度 <= l, 总权重 <= w.观察到边权长度都是 1 所以我们可以对路径的长度建立树状数组每次查询区间内满足的w即可//现在有一棵树,每条边的长度都为1,然后有一个权值,求存在多少个(u,v)点对,他们的路劲长度 <= l, 总权重 <= w./* if...原创 2019-09-16 20:51:17 · 150 阅读 · 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 · 110 阅读 · 0 评论 -
【P4149 [IOI2011]Race】点分治
P4149cnt[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 · 129 阅读 · 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 · 99 阅读 · 0 评论 -
【洛谷P3806 【模板】点分治1】点分治
P3806其实点分治去年学过 但是去年只学了个皮毛所以这次又重新写一篇题解尽可能写的详细首先我们要清楚点分治的本质 在我看来 点分治通常是在树上操作 虽然名字叫做点分治 但是本质在我看来是树分治 你可以通过找到一个点 来把树划分层次 通过对不同子树的操作来统计答案网上对于点分治的讲解还蛮多的 希望这次自己能理解通彻点分治/* if you can't see the repay...原创 2019-07-14 15:04:33 · 110 阅读 · 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 · 213 阅读 · 0 评论 -
洛谷P3806 点分治1
点分治1如果给你一个查询 那就是裸的点分治 但是给你m个查询 你该咋办呢不妨在查询之前先处理好所有可能出现的边 然后在线查询就行总根进行++操作 消除子树的影响 进行--操作具体可以看代码吧/*luogu 3806*/#include <cstdio>#include <cstring>#include <queue>#incl...原创 2018-09-26 12:16:39 · 139 阅读 · 0 评论 -
POJ 1741 Tree 点分治
POJ 1741一道点分治模板题 树上距离小于等于k 实际上由于是最短距离 我们在统计上级子树的时候容易把下面子树内的情况考虑进去 导致多选 所以要给下面子树加爸爸边的贡献 删除这些影响 这点也是点分治的精华所在/*POJ 1741*/#include <cstdio>#include <cstring>#include <queue>#i...原创 2018-09-26 10:30:19 · 96 阅读 · 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 · 154 阅读 · 0 评论