终于有道我会的了。。。 int f[2][maxn],g[2][maxn],tot[maxn];//构造叶子编号时希望最大/小result 先手取子树最小/大的编号的排名 tot是子树中叶子个数 如果希望最大,可以理解为叶子的编号是为了先手取最大时构造,而且要故意去卡取最小 f[0][x]=(∑f[ ...
分类:
其他好文 时间:
2019-02-23 10:43:12
阅读次数:
224
Description: 小Y家里有一个大森林,里面有n棵树,编号从1到n 0 l r 表示将第 l 棵树到第 r 棵树的生长节点下面长出一个子节点,子节点的标号为上一个 0 号操作叶子标号加 1(例如,第一个 0 号操作产生的子节点标号为 2), l 到 r 之间的树长出的节点标号都相同。保证 1 ...
分类:
其他好文 时间:
2019-02-23 10:40:09
阅读次数:
203
题目传送门 思路: 区间合并线段树的题,第一次写,对于一颗子树,无论这个子树怎么交换,都不会对其他子树的逆序对造成影响,所以就直接算逆序对就好。 注意叶子节点是1到n的全排列,所以每个权值都只会出现1次,合并很好写。 注意动态开点,最多n个叶子节点,然后每次查询用到log个子树节点,(这句话似乎有语 ...
分类:
其他好文 时间:
2019-02-23 01:00:25
阅读次数:
215
A,B很简单,跳过了。 C题规律相当明显,可以直接对$2^n 1$打表,也可以不打表直接算最大因数。 D题两种操作转化一下DP即可。 E题考虑查分数组不变的性质。 F题考虑dfs时动态维护每个叶子的深度,从一个节点走向它的孩子相当于孩子对应的区间加,不包含孩子的区间减。 H题虽然不那么神仙,但是代码 ...
分类:
其他好文 时间:
2019-02-22 23:28:09
阅读次数:
175
可并堆有一种黑科技是用线段树合并实现,还能可持久化,时间复杂度nlogn。 这里介绍左偏树。 d值表示走右边到叶子的距离。满足d[r] <= d[l] 写法上用rt维护根节点,类似线段树。 放一个模板。 namespace lt { int ls[N], rs[N], siz[N], d[N], r ...
分类:
其他好文 时间:
2019-02-22 10:20:50
阅读次数:
169
从树中一个结点到另一个结点之间的分支构成这两个结点之间的路径,路径上的分支数目称作路径长度。树的路径长度是从树根到每个结点的路径长度之和。结点的带权路径长度为结点到树根之间的路径长度与结点上权的乘机,树的带权路径长度为树中所有叶子节点的带权路径长度之和。
分类:
其他好文 时间:
2019-02-21 09:47:18
阅读次数:
188
MySQL中的索引:基本法则:索引应该构建在被用作查询条件的字段上;索引类型:B+Tree索引:顺序存储,每一个叶子节点到根结点的距离是相同的;左前缀索引,适合查询范围类的数据;可以使用B-Tree索引的查询类型:全键值、键值范围或键前缀查找;全值匹配:精确某个值,"JinjiaoKing";匹配最左前缀:只精确匹配起头部分,"Jin%"匹配范围值:精确匹配某一列并范围匹配另一列:只访问索引的查询
分类:
数据库 时间:
2019-02-17 12:39:22
阅读次数:
157
定义: 线段树是一种二叉搜索树。 与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 对于线段树中的每一个非叶子节点[a,b], 它的左儿子表示的区间为[a,(a+b)/2], 右儿子表示的区间为[(a+b)/2+1,b]。 因此线段树是平衡二叉树,最后的子节点数目 ...
分类:
其他好文 时间:
2019-02-15 17:21:35
阅读次数:
157
"传送门" 首先如果一开始就找到了一个叶子,那么暴力去递归找它的父亲,每次随机一个方向(除了已知的儿子)走深度次,如果走到了一个叶子就不是这个方向 (设根的深度为 $1$)这样子最后到达深度为 $3$ 的点需要花费 $11$ 次 注意到此时只有与该点距离不超过 $2$ 的点可能是根,这样的没有询问过 ...
分类:
其他好文 时间:
2019-02-15 15:44:20
阅读次数:
195
2555: SubString 链接 题意: 动态在末尾加入一个字符串,询问一个字符串出现了多少次。 分析: 如果没有动态加入,那么建出SAM后,求出parent树上,每个点|Right|,然后走一遍找到对应的点,这个点的Right集合的大小就是答案。 求Right可以从叶子结点往上走一遍。 考虑动 ...
分类:
其他好文 时间:
2019-02-12 21:49:24
阅读次数:
180