04 2019 档案

摘要:题目链接 吉司机线段树裸题... 阅读全文
posted @ 2019-04-26 18:56 jrltx 阅读(147) 评论(0) 推荐(0)
摘要:题目链接 题意:在一条直线上依次建造n座建筑物,每座建筑物建造完成后询问它在多长的部分是最高的。 比较好想的方法是用线段树分别维护每个区间的最小值mi和最大值mx,当建造一座高度为x的建筑物时,若mi>x则答案无贡献,直接退出,若mx<=x则区间赋值为x,答案加上区间长度。其他情况需要继续递归搜索。 阅读全文
posted @ 2019-04-26 16:46 jrltx 阅读(342) 评论(0) 推荐(1)
摘要:题目链接 题意:n个人排成一列,一开始他们互不认识,每次选[l,r]上的人开party,使他们互相认识,求出每次party之后新互相认识的人的对数。 思路:把“互相认识”变成单向连边,只考虑左边的人对右边的贡献。对于每个人,他认识的人的区间必然是连续的,可以维护他认识的最右边的人R,这样更新操作相当 阅读全文
posted @ 2019-04-26 14:07 jrltx 阅读(447) 评论(0) 推荐(1)
摘要:题目链接 kd树+插入操作 不知为啥我的常数纳么大,加了快读才过的┐(゚~゚)┌ 阅读全文
posted @ 2019-04-25 15:10 jrltx 阅读(259) 评论(0) 推荐(0)
摘要:题目链接 splay: 无旋treap(FHQ-treap): 阅读全文
posted @ 2019-04-24 21:05 jrltx 阅读(213) 评论(0) 推荐(0)
摘要:题目链接 题意:求一个序列的最大的(区间最小值*区间和) 线段树做法:用单调栈求出每个数两边比它大的左右边界,然后用线段树求出每段区间的和sum、最小前缀lsum、最小后缀rsum,枚举每个数a[i],设以a[i]为最小值的区间为[l,r] 若a[i]>0,则最优解就是a[i]*([l,r]的区间和 阅读全文
posted @ 2019-04-23 19:02 jrltx 阅读(543) 评论(0) 推荐(0)
摘要:题目链接 C - Flippy Sequence(组合数学+分类讨论) 两区间异或一下,分段考虑,如果全为0则任选两相同区间,答案为$C_{n+1}^{2}=\frac{n(n+1)}{2}$,只有一段连续的1则两区间有一个公共边界,另外两个边界分别为连续1的左右边界,答案为$2C_{n-1}^{1 阅读全文
posted @ 2019-04-23 17:02 jrltx 阅读(2064) 评论(0) 推荐(1)
摘要:题目链接 题意:给定一个n*m的矩阵,可以选择至多两个子矩阵将其反转,求能形成多少种不同的矩阵。 任选一个矩阵有$C_{n+1}^{2}C_{m+1}^{2}$种方法,任选两个不同的矩阵有$C_{C_{n+1}^{2}C_{m+1}^{2}}^{2}$种方法,但其中有重复的,需要去重。 重复的情况一 阅读全文
posted @ 2019-04-22 21:58 jrltx 阅读(490) 评论(0) 推荐(0)
摘要:题目链接 静态区间逆序对数查询,这道题用线段树貌似不好做,可以把区间分成$\sqrt n$块,预处理出两个数组:$sum[i][j]$和$inv[i][j]$,$sum[i][j]$表示前i个块中小于等于j的数的个数,$inv[i][j]$表示第i块与第j块之间的逆序对数,递推搞一下就行。查询的时候 阅读全文
posted @ 2019-04-13 13:05 jrltx 阅读(199) 评论(0) 推荐(0)
摘要:题目链接 思路和bzoj2141差不多,不过这道题的数据更强一些,线段树套treapT了,树状数组套treap卡过~~ 阅读全文
posted @ 2019-04-12 21:18 jrltx 阅读(143) 评论(0) 推荐(0)
摘要:题目链接 交换两个数的位置,只有位于两个数之间的部分会受到影响,因此只需要考虑两个数之间有多少数对a[l]和a[r]产生的贡献发生了变化即可。 感觉像是个带修改的二维偏序问题。(修改点$(x,y)$的值,维护和查询位于$(x_1,y_1)$与$(x_2,y_2)$之间的点的个数) 还有理论上能够AC 阅读全文
posted @ 2019-04-12 16:01 jrltx 阅读(216) 评论(0) 推荐(0)
摘要:题目链接 区间线段树套treap,空间复杂度$O(nlogn)$,时间复杂度除了查询区间k大是$O(log^3n)$以外都是$O(log^2n)$的。 (据说线段树套线段树、树状数组套线段树也能过?) 阅读全文
posted @ 2019-04-11 20:00 jrltx 阅读(200) 评论(0) 推荐(0)
摘要:题目链接 treap及树状数组模板题。 treap版: 树状数组版: 阅读全文
posted @ 2019-04-11 14:51 jrltx 阅读(184) 评论(0) 推荐(0)
摘要:题目链接 权值线段树套区间线段树,权值线段树的每个结点存储该结点所表示的区间范围内的数在各个区间的分布情况,查询时在权值线段树上二分即可。复杂度$O(nlog^2n)$ 注意区间线段树需要动态开点,并且标记要永久化,否则会TLE。 另外就是sum可能会爆int,需要用long long存储。 阅读全文
posted @ 2019-04-10 19:45 jrltx 阅读(160) 评论(0) 推荐(0)
摘要:题目链接 对每个结点建立两棵线段树,一棵记录该结点的子树下每种颜色对应的最小深度,另一棵记录子树下的每个深度有多少结点(每种颜色的结点只保留最浅的深度即可),自底而上令父节点继承子结点的线段树,如果合并两棵颜色线段树时发现某种颜色重复,则在深度线段树上把较深的深度对应的位置-1。 注意由于强制在线, 阅读全文
posted @ 2019-04-09 15:37 jrltx 阅读(472) 评论(0) 推荐(0)
摘要:题目链接 题意:给定n个五维空间上的点,以及m组询问,每组询问给出一个点,求五个维度都不大于它的点有多少个,强制在线。 神仙题 单独考虑每个维度,把所有点按这个维度上的大小排序,然后分成T块,每块用一个bitset记录这个块以及之前的块中包含的点的集合的前缀和,并用mx[i][j]来记录第i维上大小 阅读全文
posted @ 2019-04-08 19:39 jrltx 阅读(361) 评论(0) 推荐(0)
摘要:题目链接 本质是维护斜率递增序列。 用分块的方法就是把序列分成sqrt(n)块,每个块分别用一个vector维护递增序列。查询的时候遍历所有的块,同时维护当前最大斜率,二分找到每个块中比当前最大斜率大的那个点。修改的时候只需要修改点所在的那个块即可。复杂度$O(m\sqrt nlogn)$ 用线段树 阅读全文
posted @ 2019-04-07 13:17 jrltx 阅读(271) 评论(0) 推荐(0)
摘要:题目链接 kd树模板题,求二维空间上的最远点/最近点。 对所有点建立kd树,分别查询每个点即可。单次查询期望时间复杂度$O(logn)$ 阅读全文
posted @ 2019-04-06 15:20 jrltx 阅读(238) 评论(0) 推荐(0)