随笔分类 -  线段树

摘要:T1 给一个01矩阵,求一个最大子矩阵,矩阵内的和不超过k $k \leq n^2$ $n \leq 500$ sol:$O(n^4)$枚举左上角和右下角,发现后两维有单调性,可以用一个滑窗来搞 但其实非常优秀的枚举3个坐标然后二分第四个坐标的$O(n^3logn)$做法是能过的...本地1.3s 阅读全文
posted @ 2018-10-22 19:53 探险家Mr.H 阅读(172) 评论(0) 推荐(0)
摘要:T1 飞行时间 对于一个可能跨时区的航班,给定来回程的起降时间。假设飞机来回飞行时间相同,求飞机的飞行时间。 sol: 很明显答案是(过去落地 - 过去起飞 + 回来落地 - 回来起飞) / 2 时间转换要仔细算一下不要跟某省队dalao一样写挂就可以了 T2 二阶和 区间修改,求区间区间和的和 s 阅读全文
posted @ 2018-10-20 17:51 探险家Mr.H 阅读(237) 评论(0) 推荐(0)
摘要:这是一道模板题。 给定一棵 nnn 个节点的树,初始时该树的根为 111 号节点,每个节点有一个给定的权值。下面依次进行 mmm 个操作,操作分为如下五种类型: 换根:将一个指定的节点设置为树的新根。 修改路径权值:给定两个节点,将这两个节点间路径上的所有节点权值(含这两个节点)增加一个给定的值。 阅读全文
posted @ 2018-10-19 18:17 探险家Mr.H 阅读(707) 评论(0) 推荐(0)
摘要:我 是 个 傻 逼 T1 给你一个长度不超过10的数字串,问你可不可以加若干加号和一个等号使它变成一个等式 sol: 搜 T2 给一个01串,每个地方有一个代价$c_i$,交换两个字符的代价是$c_i + c_j$ 求最后逆序对数 - 交换代价的最大值 $n \leq 1000$ sol: 首先想到 阅读全文
posted @ 2018-10-15 18:59 探险家Mr.H 阅读(205) 评论(0) 推荐(0)
摘要:维护一个方阵,支持 1.删掉一个点,剩下的点先向左看齐再向前看齐 2.询问一个位置上是哪个点 $n,m,q \leq 3 \times 10^5$ sol: 我们每行前$m-1$列维护一个线段树,最后一列维护一棵线段树 然后搞n + 1个vector 这个线段树只需要维护“这个节点下面有多少点已经被 阅读全文
posted @ 2018-10-08 16:03 探险家Mr.H 阅读(301) 评论(0) 推荐(0)
摘要:有$n$个数,一开始是$1~n$,有$m$次操作 1.把编号为$x$的人编号改为$y$,保证$y$没出现过 2.把编号为$x$的人提到第一名 3.把编号为$x$的人怼到最后一名 4.查询排名为$x$的人的编号 初始每个人的排名 = 他的编号 sol: 考虑线段树,在叶子维护一个值$v$表示这个点上的 阅读全文
posted @ 2018-10-06 16:05 探险家Mr.H 阅读(150) 评论(0) 推荐(0)
摘要:很简单 用一个线段树维护 1.答案 2.当前栈顶是什么时候push进来的 然后用一棵以时间为版本的可持久化线段树维护每个操作之后第一个覆盖到他的操作是哪个 就可以了 询问直接在线段树上询问,修改在两棵树上分别修改即可 调一年 //wls niubi! #include<bits/stdc++.h> 阅读全文
posted @ 2018-09-19 18:38 探险家Mr.H 阅读(162) 评论(0) 推荐(0)
摘要:190滚粗QAQ T1 「LibreOJ NOI Round #1」接竹竿 一天,神犇和 LCR 在玩扑克牌。他们玩的是一种叫做“接竹竿”的游戏。 游戏规则是:一共有 nnn 张牌,每张牌上有一个花色 ccc 和一个点数 vvv,花色不超过 kkk 种。将这些牌依次放入一列牌的末端。若放入之前这列牌 阅读全文
posted @ 2018-09-18 18:58 探险家Mr.H 阅读(363) 评论(0) 推荐(0)
摘要:卧槽调了一晚上 想法很简单 用$set$维护不同颜色的树链的并,支持链加和单点查询 具体我们可以差分 于是就是单点加,子树和 考虑深度 我们写一个主席树,第$i$个版本只考虑前$i$层 查询$d + dep[x]$深度的树中$x$子树和即可 调调调 想5min写一晚上 #include<bits/s 阅读全文
posted @ 2018-09-11 20:16 探险家Mr.H 阅读(522) 评论(4) 推荐(0)
摘要:有些纪念意义的题 $N$个点$M$条边的无向图,$Q$次询问保留图中编号在$[l,r]$的边的时候图中的联通块个数,强制在线。 $N,M,Q \leq 200000$ 受某远古$CF$题的影响,大力$LCT$硬搞 一个神奇的做法: 令每条边边权为加入时间 搞一个数组$used$,加边的时候如果形成了 阅读全文
posted @ 2018-02-22 19:25 探险家Mr.H 阅读(230) 评论(0) 推荐(0)
摘要:一个$n*n$的棋盘,每个格子为黑色或白色。m次操作,每次修改一个格子的颜色,计算当前有多少黑色四联通块和白色四联通块 $$1 \leq n \leq 200$$ $$1 \leq m \leq 10000$$ 当年科技不发达...这明明是LCT一眼题啊喂 设有$x_1$个原来与当前格子同色的连通块 阅读全文
posted @ 2018-02-05 09:52 探险家Mr.H 阅读(253) 评论(0) 推荐(0)
摘要:您需要写一种数据结构,来维护一个有序数列,其中需要提供以下操作:1.查询k在区间内的排名2.查询区间内排名为k的值3.修改某一位值上的数值4.查询k在区间内的前驱(前驱定义为小于x,且最大的数)5.查询k在区间内的后继(后继定义为大于x,且最小的数) 应xgy的邀来码树套树了...今天或许能码完这一 阅读全文
posted @ 2017-12-11 19:26 探险家Mr.H 阅读(390) 评论(2) 推荐(0)
摘要:True和False都好搞 Maybe的情况: 1.Y年和X年的降雨量已知,X年的降雨量不超过Y年的降雨量,从Y+1到X-1年中存在至少一年的降雨量未知,从Y+1到X-1年中已知的降雨量都小于X年的降雨量。 2.Y年和X年中有且仅有一年的降雨量未知,从Y+1到X-1年中已知的降雨量都小于X年的降雨量 阅读全文
posted @ 2017-11-16 23:21 探险家Mr.H 阅读(155) 评论(0) 推荐(0)
摘要:结构体是个好东西。。。 看着逼格很高 #include<iostream> #include<cstdio> #include<cstdlib> #include<cmath> #include<cstring> #include<algorithm> #define l(x) (x<<1) #de 阅读全文
posted @ 2017-11-03 22:32 探险家Mr.H 阅读(147) 评论(0) 推荐(0)