随笔分类 - 数据结构--点分治
摘要:题目 BSOJ3392【省选模拟】树上的询问 分析 点分治。 点分治入门题,首先这题可以直接做,也可以转化成 "小于等于 \(k\) 的减掉 小于等于 \(k-1\) 的" ,然后相减来做。 两者皆可。 代码 #include<bits/stdc++.h> using namespace std;
阅读全文
摘要:题目 给一棵基环树,求树上路径长度 \(\ge k\) 的路径条数。 分析 点分治+基环树 \(Trick\) 首先基环树的一个基本处理办法就是先断掉一条环上的边,当成树处理后,再考虑这一条边的贡献。 这里就是必须经过这一条边的路径。 我们可以考虑这一条边的两端子树,显然就相当于拼接两条路径。 对于
阅读全文
摘要:题目 分析 拼接字符串,显然是字符串哈希来维护这个信息。 于是把所有的前缀哈希串预处理一下,再预处理每一个前缀对应的后缀哈希串,然后就可以直接询问当前的串作为后缀是否可以有一个前缀,以及当前作为前缀是否存在后缀。 然后就做完了。 代码 口胡的,题解代码: #include<bits/stdc++.h
阅读全文
摘要:题目 分析 点分治+乘法逆元。 首先可以直接点分治,现在尝试拼接两条路径。 我们点分治拼接路径的办法其实很容易,我们可以利用原题中的“等式”变换一下就得到我们可以处理的信息。 比如这道题,我们可以把之前所有的路径可得到的权值乘积用一个哈希表存起来,然后我们可以直接查询当前路径的逆元的 \(k\) 倍
阅读全文
摘要:题目 P6670 [清华集训2016] 汽水 给一棵树,边有边权,要求找到一条路径使得其平均值和 \(k\) 最接近。 分析 首先树上路径容易想到点分治。 然后发现这可以套一个 0/1 分数规划,于是我们可以把所有的边权减掉 \(k\),再二分 \(mid\)。 现在的问题就是判断了。 我们发现答案
阅读全文
摘要:题目 P6326 Shopping 分析 首先发现很明显是树上多重背包。 于是可以考虑设状态 \(dp[x][i]\) 表示(必选$x$)和其子树连通块,且背包容量为 \(i\) 时的最大价值。 直接单调队列 \(dp\) ,明显是 \(O(n^2m)\) 。 那么考虑优化,我们发现这里的难点无非就
阅读全文
摘要:题目 P3060 [USACO12NOV]Balanced Trees G 给出一棵树,每个节点一个括号,可能左也可能右,求树上一条合法括号路径的最大嵌套层数。 分析 很容易想到点分治,那么现在问题变成如何拼接路径。 由于这样的路径左右顺序会有影响,于是考虑分开处理,也就是拿两个东西分别记从这里出发
阅读全文
摘要:题目 P5306 [COCI2019] Transport 分析 点分治+平衡树。 首先,我们很容易想到这里要使用点分治,然后我们可以考虑如何拼接路径。 发现因为这道题这样的话是有方向的,于是可以考虑维护两个数据结构,一个是从这个点出发,一个是在这个点结束。 那么具体怎么维护呢?我们发现对于一条路径
阅读全文
摘要:题目 P2993 [FJOI2014]最短路径树问题 给定一个无向图,求出其最短路径树上面的,包含 \(k\) 个点的一条路径,使得这条路径权值尽可能大,并求出有多少条长度为这个的路径(不要求为 \(k\) 个点)。 分析 没意思题,点分治+最短路。 先直接跑最短路后建出树来。 然后如果把点数当作边
阅读全文
摘要:题目 P4149 [IOI2011]Race 给一棵树,每条边有权。求一条简单路径,权值和等于 \(k\),且边的数量最小,求最小个数。 分析 第一问很简单,我们只需要判定即可。 第二问我们其实可以考虑在第一问基础上记录这样的信息:用桶记录值等于当前权值的,且边最小的条数。 然后就可以和模板一样匹配
阅读全文
摘要:题目 P2634 [国家集训队]聪聪可可 转化题意:求权值是 3 的倍数的路径数量。 分析 我们直接把所有路径转化成模 3 意义下的数,然后其实就是询问权值和为 \(0/3\) 的路径个数。 直接套板子即可。 代码 #include<bits/stdc++.h> using namespace st
阅读全文
摘要:题目 P4178 Tree 统计树上距离小于等于 \(k\) 的点对数量。 分析 这里使用容斥法进行计算,当然也可以使用树状数组来解决。 首先我们可以求出当前点所有向下路径两两拼接得到的小于等于 \(k\) 的路径个数,这个可以排序过后双指针扫一遍即可。 但是我们发现这样会有不合法的情况出现,也就是
阅读全文
摘要:题目 P3806 【模板】点分治1 定一棵有 \(n\) 个点的树,多次询问树上距离为 \(k\) 的点对是否存在。 分析 淀粉质模板题。 淀粉质的核心就是其只统计经过当前根结点的路径,即可以把两条路径“拼”起来,同时分治结构保证了其只有 \(log\) 次这样的计算。 常用于统计树上点对数量这样的
阅读全文

浙公网安备 33010602011771号