随笔分类 - 数据结构—线段树
摘要:库存 GSS1 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long LL; 4 5 inline int read() { 6 int x=0,f=1;char ch=getchar();for(;!isdigit
阅读全文
摘要:Zbq's Music Challenge 题意: 一个长度为n的序列,每个位置可能是1或者0,1的概率是$p_i$。对于一个序列$S$,它的得分是 $$BasicScore=A\times \sum_{i=1}^{n}{S_i} \tag{1}$$ $$ combo(i)=\left\{ \beg
阅读全文
摘要:P1438 无聊的数列 链接 分析: 等差数列可加,首项相加,公差相加。 代码:
阅读全文
摘要:#6073. 「2017 山东一轮集训 Day5」距离 链接 分析: 询问$\sum\limits_{i \in path(u,v)} dis(p_i, k)$,将前面的路径转化一下,分别求$path(u,root), path(v,root), path(lca, root), path(lca,
阅读全文
摘要:链接 分析: 每次操作把以前没有出现这个数的设为1,有这个数的设为0。首先将当前区间设为1,考虑有set维护这个颜色出现的区间,然后把所有与当前区间相交的拿出来,修改为0。 复杂度?每次操作的线段只会加入到一次set中,从set中取出一次,只会修改一次,然后就合并成大的了,每次操作也只会加入一条线段
阅读全文
摘要:4556: [Tjoi2016&Heoi2016]字符串 链接 分析: 首先可以二分这个长度。此时需要判断是否存在一个以b结尾的前缀,满足与[c,d]的lcp大于等于mid。 如果我们把串翻转,那么就是判断是否存在一个以b开始的后缀,这样可以建出SAM,线段树维护每个点的right集合。此时在从包含
阅读全文
摘要:4552: [Tjoi2016&Heoi2016]排序 链接 分析: 因为只询问一次,所以考虑二分这个数。显然是没有单调性的,但是我们可以二分所有大于等于mid的数中,是否有满足条件的x(而不是之间判断mid是否满足条件)。 那么将大于等于mid的数设为1,小于mid的数设为0,此时对区间排序就变得
阅读全文
摘要:5286: [Hnoi2018]转盘 链接 分析: $\min\limits_{i=1}^n \{ \max\limits_{j=i}^{i + n - 1} \{ a_{j}+i \} \} +n-1$ $\min\limits_{i=1}^n \{ \max\limits_{j=i}^{2n}
阅读全文
摘要:4515: [Sdoi2016]游戏 链接 分析: 树链剖分 + 超哥线段树。注意细节。 代码:
阅读全文
摘要:G. Distinctification 链接 分析: 线段树合并 + 并查集。 最后操作完后a连续递增的一段,b一定是递减的。最后的答案是$\sum (a_{new}-a_{odd}) \times b_i$,即改变后的a减去之前的a。 那么对于连续的一段考虑怎么求。按照bi建立权值线段树,线段树
阅读全文
摘要:4821: [Sdoi2017]相关分析 链接 分析: 大力拆式子,化简,然后线段树。注意精度问题与爆longlong问题。 代码:
阅读全文
摘要:P3703 [SDOI2017]树点涂色 链接 分析: 首先对于询问,感觉是线段树维护dfs序,每个点记录到根的颜色个数。第二问差分,第三问区间取max。 那么考虑修改,每次将一个点的颜色变成和父节点的颜色一样的过程中,这个点的子树内都会-1。 这个修改的过程我们可以认为是修改边的过程,将一些边设为
阅读全文
摘要:5249: [2018多省省队联测]IIIDX 链接 分析: 贪心。 将给定的权值从大到小排序,从第一个往后挨个赋值,考虑第i个位置可以赋值那些树。首先满足前面必须至少有siz[i]个权值没选,如果存在相同的数,尽量往后选。 那么可以给每个权值记录一个值F[i],表示i左边可以选多少个权值了。还要和
阅读全文
摘要:P4211 [LNOI2014]LCA 链接 分析: 首先一种比较有趣的转化是,将所有点到1的路径上都+1,然后z到1的路径上的和,就是所有答案的deep的和。 对于多次询问,要么考虑有把询问离线,省去每次询问的复杂度,多个一起处理,要么做到优化掉查询。 这里发现求deep和的过程不能在省了,于是可
阅读全文
摘要:3832: [Poi2014]Rally 链接 分析: 首先可以考虑删除掉一个点后,计算最长路。 设$f[i]$表示从起点到i的最长路,$g[i]$表示从i出发到终点的最长路。那么经过一条边的最长路就是$f[u]+1+g[v]$。 删除一个点x后,会使一些路径没了。考虑这些路径的特点。我们它比x拓扑
阅读全文
摘要:2653: middle 链接 分析: 二分答案+主席树。 对于中位数的经典做法,就是二分一个数,将小于的变成-1,大于等于的变成+1,那么如果sum>=0(因为+1包括等于),L=mid+1,否则R=mid-1。 那么考虑二分一个中位数(当然只二分出现过的数即可),然后向上面一样判断。 因为二分的
阅读全文
摘要:G. Multidimensional Queries 链接 分析: 考虑如何去掉绝对值符号。 $\sum \limits_{i = 1}^{k} |a_{x, i} - a_{y, i}|$,由于k比较小,考虑枚举每一维的符号,发现如果不是最终的答案,结果会变小,不影响取max的操作。 然后就是单
阅读全文
摘要:4825: [Hnoi2017]单旋 链接 分析: 以后采取更保险的方式写代码!!!81行本来以为不特判也可以,然后就总是比答案大1,甚至出现负数,调啊调啊调啊调~~~ 只会旋转最大值和最小值,以最小值为例,画一下图可以看出,旋转后,深度分成三部分讨论,最小值的深度(变为1),最小值右子树的深度(不
阅读全文
摘要:Harry And Math Teacher 链接 题意: n层楼,每层有两扇门,初始时,从第i层到第i+1的所有门都可以相互到达。两种操作,询问从a层到b层的方案数,修改x层到x+1层两扇门之间的连通性。 分析: 线段树维护转移矩阵。 考虑如歌计算a->b的方案数,$f[i][0/1]$表示从起点
阅读全文
摘要:E:01 串 链接 分析: 线段树维护转移矩阵。每个节点是一个矩阵,区间内的矩阵乘起来就是答案矩阵。矩阵乘法满足结合律,所以线段树维护。 代码:
阅读全文

浙公网安备 33010602011771号