首页 > TAG信息列表 > tre

【DS】 线段树分裂&合并学习笔记

大家好哇,我又来学数据结构了。 参考资料: 不分解的氢氧化银 模板题解 前置芝士: 线段树(废话) 动态开点 亿点树上问题基础 线段树合并 顾名思义,我们要把两颗线段树合并在一起,如图 (假设我们要维护的是权值和的信息,维护其他信息只需要稍作更改) 实现起来很简单,我们只需要把对应

牛客小白月赛39D - 绝望(数论 + 数学规律 + 数据结构)

牛客小白月赛39D - 绝望(源地址自⇔牛客) 目录 牛客小白月赛39D - 绝望(源地址自⇔牛客) tag 题意 思路 赛时小结正解 AC代码 错误次数 tag ⇔数论、⇔数学规律、⇔数据结构、⇔*1700左右 题意 给定一个长度为 \(N\) 的序列 \(a\) ,规定如下两项操作: 输入 \(4\) 个整数 ”

冲刺省选2月17日 (互测)

T1 最短路 需要一个数据结构实现快速加一个 2 的幂和比较大小 考虑主席树维护二进制数,每个节点维护答案和第一个为 0 的位置 加 \(2^k\) 就从 k 往后找到第一个为 0 的位置改成 1,中间的位改为 0 比较大小线段树上二分就行了 T2 集合 要求一个集合 S ,满足 \(\prod_{i\in S}i!\) 为

冲刺省选2月8日第十二场

T1 设 \(f_i\) 表示以 \(i\) 结尾的最大答案 发现只考虑当 \(a_i\) 是最大值时的转移也是正确的 即 \(f_i=\max_{j=1}^{i-1} \{ (b_j-b_i)^2+c+f_j \}\) 因为若中间夹着个比 \(a_i,a_j\) 值都大的值的话肯定不会优 然后李超树维护就行 T2 首先,如果知道了序列的最大值 \(mx\),设询问

省选模拟测试5

T1 点点的圈圈 因为只有包含关系和不相交关系,就可以根据包含关系\(O(n^2)\)建树,\(O(n)\)跑树形dp 考虑优化建树,把一个圆看成一个正方形然后做扫描线,线段树每个节点维护set,存纵坐标在这个区间的正方形的编号 需要判四个角,暴力跳就行了 大多数情况下复杂度\(O(n\log^2n)\) T2 点点的

题解 CF1599I Desert

CF1599I Desert / 原题链接 题意 仙人掌是一张无向连通图,在一个仙人掌上,任意一条边至多只会出现在一个环上。 荒漠是一张无向图,一个荒漠的每个极大连通分量都是一个仙人掌。 给定一个 \(n\) 个点 \(m\) 条边的无向图,求有多少对 \(l,r\in [1,m]\),使得只保留编号在 \([l,r]\) 中的

AtCoder Beginner Contest 233 F - Swap and Sort

题目链接:https://atcoder.jp/contests/abc233/tasks/abc233_f 题目大意:给你一个 1 1 1到 N N

[题解] 七彩树

题意 一棵以1为根n个节点的树,每个点有颜色\(c_i\in[1,n]\) m个询问,给定x,d,求x的子树内深度在\([dep_x,dep_x+d]\)的节点的颜色种类数 强制在线,多组数据 题解 这个若没有深度限制就能转化成dfs序,然后主席树就可了 既然有深度限制,考虑可持久化线段树,每个深度一个版本 在加入深度为x

Segment tree beats 学习笔记

模板题 :P6242 题意 : 写一棵线段树, 支持区间加,区间对 \(x\) 取 \(\min\), 区间和, 区间最大值, 区间历史最大值。 直接暴力维护是 \(O(n^2)\) 的, 考虑如何优化。 考虑对于线段树的每一个节点, 维护最大值 \(mx\), 最大值个数 \(cnt\), 严格次大值 \(sec\)。 在区间对 \(x\) 取 \(\min\)

NOIP模拟97(多校30)

T1 构造字符串 解题思路 不算特别难的题,但是有一点细节。。。 首先需要并茶几缩一下点,然后判断一下是否合法,由于我们需要字典序最小的,因此我们应当保证一个联通块中标号较小的点为根节点。 那么对于所有不能够相等的标号对,我们再标号较大的点记下来标号较小的点的限制,然后从前往后

CF1086F Forest Fires

按套路,把原答案式转化 \[Ans=T*F(T) -\sum_{i=0}^{T-1}F(i) \]\(F(i)\) 表示 \(i\) 时刻矩形的面积交 考虑没有交集的情况,则 \(F(i)=(2i+1)^2\) 为二次函数 若有交集,相交面积仍为二次函数 二次函数的差依然是二次函数 那总得来说,\(F\) 为一个分段二次函数 段数只有 \(n^2\) 级别

(多校) 古老的序列问题

考虑分治 将原序列拆成若干新区间,求经过 \(mid\) 的询问区间 在一段处理区间内,另开 \(4\) 棵线段树分别维护四段(根据最大值最小值划分)的系数 合并询问区间即可 注意如果某一个询问区间恰好包含该分治区间 直接后续更新答案即可,不然空间就爆成 \(n^2\) 了 这道题主要学的分治思想

BZOJ4212 神牛的养成计划 (字典树,bitset)

题面

LCT 学习笔记

推荐博文 文艺平衡树 LCT 的前置知识当然时文艺平衡树啦。先讲讲文艺平衡树。 题意 链接 给你一个长度为 \(n\) 的序列 \(a_i\),\(T\) 次操作,每次翻转一个区间,输出最后的序列。 题解 维护一个 Splay,一开始按照 \(a_i\) 为下标,\(i\) 为键值 进行建树,可以理解成键值就是这个点的深度

8.23考试总结(NOIP模拟46)[数数·数树·鼠树·ckw的树]

T1 数数 解题思路 大概是一个签到题的感觉。。。(但是 pyt 并没有签上) 第一题当然可以找规律,但是咱们还是老老实实搞正解吧。。。 先从小到大拍个序,这样可以保证 \(a_l<a_r\) 直接去掉绝对值。 然后就可以推出如下柿子: \[\displaystyle\sum_{l=1}^{k}-a_l\times(k-l)+\sum_{r=2}^{k

8.14考试总结(NOIP模拟40)[打地鼠·竞赛图·糖果·树]

T1 打地鼠 解题思路 数据范围比较小,不需要什么优化。 直接二维前缀和枚举右下角端点就好了。 code #include<bits/stdc++.h> #define int long long #define ull unsigned long long #define f() cout<<"Pass"<<endl using namespace std; inline int read() { int x=0,f=1;char

noip模拟37 数对

裸的线段树,这里不再讲方程的转移实现,主要证明一下按照和排序的正确性。 对于 \(j\) 我们希望 \(i\) 再其的前面。格式化的,对于 \(a_{i}\leq b_{j}\) 且 \(b_{i}\leq a_{j}\) ,我们期望 \(i\) 排在 \(j\) 的前面。 为什么要 \(b_{i}\) 小于 \(a_{j}\) 呢? (其实是当其满足大于时, \(i

noip 模拟 34 Equation

T2 稀有算法 : 树剖 。 虽说过不了,但能打出来就好 考场时就86,到现在还是86,实在卡不动了... 代码能力++ 这里不做树剖讲解,仅作留念。(下文讲正解) 有兴趣的 \(oler\) 可以自行尝试 #include <bits/stdc++.h> #define re register #define ll long long using namespace std; const

[CEOI2019]Magic Tree

壹、题目描述 ¶ 传送门 to Luogu. 贰、题解 ¶ ◆ 前言 真的降智了,那么明显的性质都没有被发现...... ◆ 暴力的想法 一眼树 \(\rm DP\) ?考虑设计状态 \(f(u,j)\) 表示在 \(j\) 时刻割掉 \(u\) 与其父亲的边的最大收益。那么我们就有转移式子: \[f(u, j)=w_u[d_u=j]+\sum_{v\in so

7.15考试总结(NOIP模拟16)[Star Way To Heaven·God Knows·Lost My Music]

败者死于绝望,胜者死于渴望。 前言 一看这个题就来者不善,对于第一题第一眼以为是一个大模拟,没想到是最小生成树。 对于第二题,先是看到了状压可以搞到的 20pts 然后对着暴力一顿猛调后来发现是题面理解错了。 最后 40min 的时候还是把目光投向了这个题的另一个部分分,然后搞了一个

NOIP 模拟赛 : english

一般来说,遇到 区间 && max_xor ,考虑 trie 板子就好了 但这道题不太像板子。。。 但可以把它变成 板子 , 考虑一个点作为最大点的左右边界,现在我们只考虑这个区间 : 对于操作 1 : 我们固定左区间,然后枚举右区间的数值, 令数组 s[i][j] 为 截止到第i个数的第j位为1 的个数的总和 那我

主席树的一些理解

前言: 很早之前写过主席树的模板,但因为没遇到过用主席树的题(做题太少 ),太久没写,就忘了。 于是,今天又学了一遍主席树,有了一点新的理解。 1,离散化。 for (int i = 1; i <= n;i++) { cin >> v[i]; pos.emplace_back(v[i]); } sort(pos.begin(), pos.end()); pos.erase(u

bzoj4919:大根堆

大根堆 题目描述 给定一棵n个节点的有根树,编号依次为1到n,其中1号点为根节点。每个点有一个权值v_i。 你需要将这棵树转化成一个大根堆。确切地说,你需要选择尽可能多的节点,满足大根堆的性质:对于任意两个点i,j,如果i在树上是j的祖先,那么v_i>v_j。 请计算可选的最多的点数,注意这

6.7考试总结(NOIP模拟5)

前言 昨天说好不考试来着,昨晚就晚睡颓了一会,今天遭报应了,也没好好考,考得挺烂的就不多说了。 T1 string 题目描述 给定一个由小写字母组成的字符串 s。有 m 次操作,每次操作给定 3 个参数 l,r,x。如果 x=1,将 s[l]~s[r]升序排序;如果 x=0,将 s[l]~s[r]降序排序。你需要求出最终序列。

[CF1149C]Tree Generator™

题目 传送门 题解 首先搞明白建树的方式:遇到左括号往下走,遇到右括号往回走.现在我们要求这个构造出来的树的直径. 由于每一次都会互换两个括号的位置,所以显然树的形态是不固定的,进而如果我们每次将树构造出来跑树 \(\tt DP\) 显然不可取,这样复杂度为 \(\mathcal O(qn)\),对于 \(n\l