随笔分类 - 数据结构——线段树
摘要:~~颂魔眼中的一眼题我大湖南竟无一人$AC$~~ 首先我们考虑一个性质:我们肯定存在一种最优解,满足从某个点出发,一直往前走,不停下来。 证明:我们假设存在一种最优解,是在$t_i$的时候到达$a$点,那么我肯定会在$t_i x(x≥1)$的时间会到达$a 1$号点 我们假设$x != 1$,即我们
阅读全文
摘要:~~不知道有没有人跟我一样数据结构学傻了~~ 首先这道题是要求回文串,那么我们可以想到 "manacher算法" 但由于$manacher$不能求出双回文子串,我们要考虑一些性质 首先对于一个回文串,删掉两边的字符它一样是回文串 然后$manacher$求出的$p$数组就是他能拓展的数量,发现对于一
阅读全文
摘要:$Orz$ 各位题解大佬,我来膜拜一发 ~~还有单调栈实在没弄懂~~ 法一:线段树+堆 首先,讨论区间的个数的题目,我们可以想到枚举一个端点$r$,找到所有的$l$ 我们不妨设:$ml[i]$为第i种颜色出现的最小位置,$mr[i]$为第i种出现的最大位置 我们想到对于一个右端点,他有那些值是不能选
阅读全文
摘要:前置芝士: "[LNOI2014]LCA" ~~要是这题放HNOI就好了~~ 原题:$\sum_{l≤i≤r}dep[LCA(i,z)]$ 这题:$\sum_{i≤r}dep[LCA(i,z)]^k$ 对于原题,我们需要把每个询问拆成1~l 1 & 1~r再进行差分(~~所以这题帮我们省去了一个步骤
阅读全文
摘要:拿到这道题的一般思路就是直接暴力枚举每一对l,r,再拿l与r的每一个数与p比较,这样就可以O(n^3)(不满)的复杂度获得60分 include using namespace std; int n,k,p,ans; struct edge { int c,m; }a[200005]; inline
阅读全文
摘要:一、概念 线段树,在各个节点保存一条线段 可以高效解决连续区间的修改查询问题 由于二叉结构的特性 它每次操作能保持每个操作的复杂度为O(logn) 由于是一棵二叉树 每个节点的信息都会被logn个左右的节点记录 所以空间消耗一般较大(一般是4 n) 二、操作 1、预处理 我们先考虑节点个数是2的n次
阅读全文
摘要:这道题思路真是妙啊QWQ "原题地址" 题目大意:在一个平面内,求出所有的高度大于$0$的点与$(0,0)$的连线没有与之前的线段相交的楼房,带修改 看到带修改,显然会想到数据结构来维护,再看到再平面区间加减和区间查询,显然又会想到线段树。 那线段树的每一个节点要维护什么值呢? 看到题面自然会想到斜
阅读全文

浙公网安备 33010602011771号