树型结构
文章平均质量分 90
ZHXU1998
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[点分治] 模板 POJ - 3237 Tree | CF161D Distance in Tree
首先理解模板一.概念 是处理树上路径的一个极好的方法。如果你需要大规模的处理一些树上路径的问题时,点分治是一个离线的方法一般而言 对于一棵树 我们能选取一个点 将其分割为几个棵子树 如果想要dfs每次进行的少 我们最好就要找到数得重心 这样深度就变为了 log2(n)int siz[maxn],SIZ,dp[maxn],root; // 这里部分是之后用的bool use[maxn]...原创 2019-05-15 13:40:05 · 275 阅读 · 0 评论 -
2019牛客多校第九场 H Cutting Bamboos (二分主席树)
看到题解说二分 心里也有数了。。。。。H Cutting Bamboos给了一些高度得柱子 每区间你可以坎y次 y次之后 必须砍没有了没有砍 总长度得一样 问第x次砍得高度在哪里因为砍得次数 和 每次砍得总长度是一定得 我们二分高度这样 剩下得总长度 就可以用来做二分 得判断了小于高度得总距离 和高于 高度得数量 * mid 就是我们剩下得距离#include <bit...原创 2019-08-16 08:26:39 · 239 阅读 · 0 评论 -
[线段树] Codeforces 482B Interesting Array (思维小优化)
Codeforces 482B Interesting Array(线段树)题目大意:给定一个长度为N的数组,现在有M个限制,每个限制有l,r,q,表示从a[l]~a[r]取且后的数一定为q,问是否有满足的数列。考虑维护 30颗线段树 每个代表这位二进制 0 1区间修改 区间查 这线段树代表的二进制位 覆盖区间 与 q 这位二进制 是一样的如果q 是 0 但是 这树区间二进制 ...原创 2019-08-20 08:41:07 · 261 阅读 · 0 评论 -
2019HDU杭电多校第三场 HDU 6606 Distribution of books (DP+线段树)
题目要使得最大值最小?考虑二分答案 对于每次二分答案(假设为x),如何判定x能否满足分为k份的要求呢?考虑动态规划dp[i] = max(dp[j]) + 1; (sum[i] - sum[j] <= x)令dp[i]表示前i个数最多能分成几段, 则 如果直接dp,时间复杂度为n^2,显然会TLE!考虑用平衡树维护或者离散化后权值线段树维护,总体复杂度n*log(n)...原创 2019-08-08 11:06:39 · 260 阅读 · 0 评论 -
2019HDU多校第二场 HDU-6602 Longest Subarray (线段树 + 思维)
题意: 长度为n的序列,求最大的子序列长度,要求子序列中所出现的数字个数>=k。思路: 枚举右边界r,线段树维护左边界l的范围。对于每一个数a[r]来说,我们可以清楚的知道 l 可以在什么地方放入一个 a[r] 对于 i 位置 c - 1数据不需要出现对于它之前出现的 我们是要选择r这个位置的数据的 所以我们要把 它前一个数据位置 到 r - 1 先 -1选择r位置 就把之前位置...原创 2019-07-31 10:52:53 · 390 阅读 · 0 评论 -
2019杭电多校第二场 K Keen On Everything But Triangle HDU 6601 主席树
给了长度为n得序列问 l r 区间最大得三角形周长首先 ai 在 1e9 之内 所以最多跑50 个边就确定是否存在 合法三角形了所以这里建主席树维护区间k值就好 记得主席树初始化除了建树 还要 tot = 0#include <bits/stdc++.h>using namespace std;const int maxn = 1e5 + 5;int n, m;i...原创 2019-07-30 08:37:24 · 269 阅读 · 0 评论 -
[区间计数(元素去重个数)] 树状数组(不变序列) 牛客练习赛47 | DongDong数颜色 HDU-3333 CF-703D
牛客练习赛47 | DongDong数颜色原创 2019-06-11 09:26:41 · 499 阅读 · 0 评论 -
2019 南昌网络赛 J. Distance on the tree
wa 这题重写了一遍过了 我第一次写的什么狗屎啊题目 : https://nanti.jisuanke.com/t/38229如下图对每个 树节点 以他向后面每个链 建主席树这样只要跑lca 就能区间快查k大了#include <iostream>#include <cstdio>#include <algorithm>using names...原创 2019-06-02 15:49:06 · 363 阅读 · 2 评论 -
[主席树] 自己对 静态主席树 的一个学习小结
感想 入门即劝退 还有个动态主席树先弃坑了这里贴点其他博客的关键字和解释主席树的每个节点对应一颗线段树,此处有点抽象。在我们的印象中,每个线段树的节点维护的树左右子树下标以及当前节点对应区间的信息(信息视具体问题定)。对于一个待处理的序列a[1]、a[2]…a[n],有n个前缀。每个前缀可以看做一棵线段树,共有n棵线段树;若不采用可持久化结构,带来的严重后果就是会MLE,即对内存来说很难承...原创 2018-09-16 21:19:27 · 305 阅读 · 0 评论 -
{口胡~数据结构} CCCC L2-004 L2-006 L2-011 L2-012 L3-002(线段树) HRBUST-2040 L2-013(联通度)
L2-004 这是二叉搜索树吗? (25 分)口胡 搜索树中序遍历是有序的 树 左边小于右边 所以在前序遍历里一旦找到第一个比当前比较用的跟大的 便是右子树的开端这题 输入可能是镜像树的前序 所以 改下一开始建立树函数大小于号就好当 是镜像树时 显然 不能正常建立 所以后续遍历数组不会到达n个#include <bits/stdc++.h>using namespace ...原创 2019-03-02 21:17:09 · 294 阅读 · 0 评论 -
[线段树] CH4301 Can you answer on these queries III | 2019南昌网络赛 I Max answer | Interval GCD CH4302
https://www.acwing.com/problem/content/246/CH4301 Can you answer on these queries III这题改了好久啊问 区间子段和 最大显然一开始我们分成 lmax rmax lrmax 和 sum 一开始想的还行后面查询就是蛋疼的开始如同我注释的那个地方一样如果 我们直接返回 lrmax 我们就丢掉了一些信息这个...原创 2019-06-01 09:43:14 · 300 阅读 · 0 评论 -
高级树状数组——区间修改区间查询、二维树状数组
“高级”数据结构——树状数组!※本文一切代码未经编译,不保证正确性,如发现问题,欢迎指正!单点修改 + 区间查询最简单的树状数组就是这样的:void add(int p, int x){ //给位置p增加x while(p <= n) sum[p] += x, p += p & -p;}int ask(int p){ //求位置p的前缀和 int re...原创 2019-08-12 20:15:18 · 234 阅读 · 0 评论
分享