题解 首先我们得找到任意一个合法的序列,这可以使用贪心算法在 $O(N\log N)$ 的时间复杂度内做到。我们可以把所有的区间 $(a_i,b_i)$ 按左端点从小到大进行排序,然后从左到右扫描这些区间。我们去找朋友 $j$ 可以在哪些位置,我们把所有左端点 $a_i\leq j$ 的区间的右端点 ...
分类:
其他好文 时间:
2020-05-03 00:57:36
阅读次数:
84
P2073 送花 因为c保证只会出现一次并且c小于等于106 我们可以以c为关键字,维护花费和优美度,构建一棵线段树 对于1操作,我们直接查询c节点是否有值,有就直接返回,反之赋值 对于2操作,删去最大值,就从完整区间开始,只要右子树有点或左子树无点,就尽可能的去遍历右儿子,否则才遍历左儿子,将最后 ...
分类:
其他好文 时间:
2020-05-02 22:58:42
阅读次数:
64
前情回顾: "蒟蒻的splay1" ~~时隔好久终于更新了.jpg~~ "文艺平衡树" 简单来说就是要求区间翻转 首先我们按照点的编号来建一颗二叉搜索树,建树方式类似线段树(注意空间要开大不然会$T$) 这样建出来的树类似这样: 然后我们就可以在树上找到区间了 但是我们怎么翻转呢? 如果这个区间长度 ...
分类:
其他好文 时间:
2020-05-02 18:57:33
阅读次数:
46
判下连通,离线下来连边,就是个裸的板子了QvQ。 我们把一堆边连到一个点,那个点连到一堆边,这样就可以满足 [l1,r1] to [l2,r2] 了 可以用 zkw 线段树来跑 spfa,奇怪的姿势增加了。 ...
分类:
其他好文 时间:
2020-05-02 18:47:50
阅读次数:
47
~~为什么题解的复杂度都带根号啊…迷惑~~ 题意: ~~题目的翻译很清楚。~~ 先把字符串翻转,容易证明答案不变。 我们考虑最优的办法,容易证明,最优解中,如果是非真子集,那么很显然长度是 ~~(算了稍微解释一下,就是如果你多出来的就删掉,保留一个这种递增序列,这样一定最优)~~ ${1,2,3,4 ...
分类:
其他好文 时间:
2020-05-02 18:34:32
阅读次数:
88
Codeforces Round 638 (Div. 2) F. Phoenix and Memory 区间贪心+线段树 题意 有n个人,标号为1 n,他们站的顺序未知,已知每个位置可能的标号范围为[a,b],要求还原朋友的站位顺序,同时,需要考虑还原后的站位是否是唯一的,如果不唯一,随意输出两种合 ...
分类:
其他好文 时间:
2020-05-02 16:30:55
阅读次数:
80
关于树状数组 树状数组,即 Binary Indexed Tree ,主要用于维护查询区间和 属于 log 型数据结构 和线段树比较 都是 log 级别 树状数组常数、耗费的空间都比线段树小 树状数组无法完成复杂的区间操作,功能有限 树状数组介绍 二叉树大家一定不陌生 然而真实的树状数组省去了一些空 ...
分类:
编程语言 时间:
2020-05-02 13:28:12
阅读次数:
71
线段树其实就是一棵二叉树,它将一个数列分成小区域,每个节点分别储存其对应的区间左右端点。 设数组 a[n] ,图中 [ i,j ] 表示每一个二叉树结点对应的区间。容易发现,根节点对应的是整个区间 [ 0,n-1 ] 。一个结点对应的区间为 [ l,r ] ,当l=r时,它就是一个叶子结点,没有左右 ...
分类:
其他好文 时间:
2020-05-01 21:01:48
阅读次数:
51
线段树 线段树(Segment Tree)是一种基于分治思想的二叉树结构,在区间进行信息统计。比区间划分的树状数组通用 1.线段树的每个节点代表一个区间。 2.线段树有唯一的根节点,即代表整个区间的结点。 3.线段树的叶节点代表一个长度为 1 的元区间。 4.对于内部节点 $[l,r]$ (非叶节点 ...
分类:
其他好文 时间:
2020-05-01 18:31:57
阅读次数:
51