随笔分类 - 题解
摘要:" 题目传送门 " %%% Lance1ot 三秒就把这题切了 "官方题解" 但既然标签有个“乱搞”,就肯定不是用的官方正解 233 考虑折半搜索(中途相遇) 将必须经过的$k$条边所连的点称为关键点 先以所有关键点为起点,分别跑一边最短路 设$mid = \lfloor \frac{k}{2} \
阅读全文
摘要:" 题目传送门 " 博客中为数不多的NOI的题目的题解…… 先将区间都离散化,再按区间长度排序 用双指针,并线段树维护出现最多的数出现了多少次 如果$ m$次,就移动左指针,删除最左边的区间,直到$= m$次,在这个过程中记录答案 如果$ include include include define
阅读全文
摘要:" 题目传送门 " 珂朵莉树有个 \ 用处,适用范围这么窄,还必须要求随机数据 …… 嗯,真香 对于大多数题目,出题人不会刻意去卡珂朵莉树(那时可能还没有珂朵莉树),即使去卡,因为OI是按照通过的测试点数目得分,不太可能所有的测试点都能将珂朵莉卡掉。而珂朵莉树好想好敲,可以使某些题目难度下降一个档次
阅读全文
摘要:" 题目传送门 " 这是一道双倍经验题 "Luogu P2195" 虽然Luogu P2195的题意很迷,但确实是双倍经验 先预处理出每棵树的直径,并用并查集维护哪些点在同一棵树里 对于$1$操作,直接输出就可以了 对于$2$操作,显然在两棵树直径的中点处连边最优。再用并查集维护一下即可
阅读全文
摘要:" 题目传送门 " 第一次写二维线段树 二维线段树模板题 感觉二维线段树很迷~~代码倒是挺好记~~ 还得再理解理解
阅读全文
摘要:" 题目传送门 " 神仙题 Alice和Bob怎么整天在一起玩一些神仙游戏 原序列为$x$,输入的序列为$a$。 因为题目中是 上升子序列 和 下降子序列 ,所以原序列中相同的元素没有贡献,因此不妨设$x$为$1$~$n$的一个排列 $a_i$是以$x_i$为结尾的最长上升子序列的长度,所以对于所有
阅读全文
摘要:" 题目传送门 " “电脑运行速度很快!24的阶乘也不过就620448401733239439360000,yyy你快写个程序来算一算” 我想你可能需要 "神威·太湖之光" 因为一共就24张卡片,可以状压 设 ,表示使用集合$S$的卡片的方案数, 表示使用集合$S$的卡片所能到达的距离 转移就很简单
阅读全文
摘要:" 题目传送门 " 第一次分块 分块,将每一个块内部排序 对于A操作,块内部二分查找,两边的零散部分在原数组中暴力查找 对于M操作,给整块打上标记,两边的零散部分暴力修改
阅读全文
摘要:" 题目传送门 " ~~好奇怪的人物名字~~ 和 "这道题" 的树状数组解法思想相同 我们要找区间中至少出现了两次的颜色,则区间内第一次出现的颜色没有价值,只有第二次出现的颜色才会对答案有所贡献。 先预处理出各个位置 ,表示下一个该位置上的颜色出现的位置。 将询问按左端点排序,对于一个询问,从左向右
阅读全文
摘要:" 题目传送门 " 第一次做用线段树维护DP的题目 算是个带权区间覆盖问题(瞎起的名字) 先将所有区间按左端点的升序排序,然后依次枚举 显然可以写出DP方程: 设 表示从要覆盖的区间的左端点$s$到点$i$之间(包括$i$)所有的点全被覆盖所需要的最小花费 其中 、``cow[p].t p``个区间
阅读全文
摘要:" 题目传送门 " 这道题的思路有点像 "这篇博客" 用线段树维护区间和、区间最大值。若区间最大值小于模数,则直接返回,不对此区间进行操作
阅读全文
摘要:" 题目传送门 " 很妙的差分题目 分别找到画布上每种颜色的最上、最下、最左和最右,然后进行差分,求出每个位置至少涂了几次。如果涂的次数 ,则肯定不是先涂的 有一种特殊情况,如果涂的次数 ,但只有一种颜色,且 ,则一定不是先涂的
阅读全文
摘要:" 题目传送门 " 这守卫怕不是铁憨憨,互相$TK$欢乐多 如果没有墙的话,可以将它的行和列分别看成点,对于每一块空地$(i, j)$,在$i$、$j$之间连一条边,然后跑二分图匹配就好了 然后考虑墙的影响,墙会把一行或一列分成几段互不影响的区间,将这几段区间的行(列)标上不同号,表示它们互不影响,
阅读全文
摘要:" 题目传送门 " 我可以说方伯伯浪费粮食么…… 首先要知道一个结论: 每次操作的右端点一定是$n$ 因为如果拔高一段区间,区间内部的玉米的相对高度不会发生变化,区间左边的点贡献增加$x$,但区间右边的点贡献会减少。如果我们将这段拔高区间的右端点挪到$n$上,区间左边的点贡献还是会增加$x$,区间右
阅读全文
摘要:" 题目传送门 " 这紫题……有点水 自底向上合并,每次找儿子里面最小的合并 用了vector,常数有点大,开O2才过
阅读全文
摘要:" 题目传送门 " 数据结构学傻了…… 对每个颜色开一个vector,记录该颜色出现过的位置 查询操作直接在vector里二分查找$l,r$,一减就可以 修改操作直接二分后swap就可以了
阅读全文
摘要:" 题目传送门 " 奇妙的题目 把操作离线下来,二分第$q$位置上的数$x$,将排列中大于$x$的数记为$1$,小于$x$的数记为$0$,然后就可以很简单的用线段树维护每个操作 最后判断$q$位置上的数是否为$1$ 时间复杂度$O(n\log^2 n)$
阅读全文
摘要:" 题目传送门 " DP是不可能DP的,只会搜索 先二分距离,然后此题转化为最小点覆盖,即选择最少的点去覆盖关键节点,覆盖范围为二分的$mid$ 对于覆盖,大部分题解都是用的DP,但是用剪枝后的搜索也能水过去 对于每个关键节点,如果它已经被覆盖了,就不管它,否则选择它的$k$级祖先进行覆盖 在用DF
阅读全文
摘要:" 题目传送门 " 简化题意 :一颗带有点权、以$1$为根的树,对于每个节点$x$,求出$x$的子树中有多少个点满足该点的点权大于$x$的点权 先将点权离散化 对这棵树进行DFS,在DFS到$x$时,加入该点点权,然后在DFS它的子树前记录一下当前有多少节点大于$x$,记为$last$。在回溯到该节
阅读全文
摘要:" 题目传送门 " 先把每两个点之间的LCA求出来 画图模拟,显然可以~~(也可能并不显然)~~发现集合点选为深度最小的LCA时最优
阅读全文