题目描述 分析 方法一(线段树) 线段树维护的是以当前节点为左端点的区间的贡献 而区间的右端点则会从 $1$ 到 \(n\) 逐渐右移 当我们把右端点从 \(i-1\) 的位置扩展到 \(i\) 的位置时 如果原先区间的最近公共祖先到根节点的路径中经过 \(a[i-1]\) 和 \(a[i]\) 的 ...
                            
                            
                                分类:
其他好文   时间:
2020-10-07 21:33:49   
                                阅读次数:
17
                             
                         
                    
                        
                            
                            
                                
                    数据很小,n = 20,这个应该可以直接搜索吧,我没试,我用的是折半搜索+二分+线段树维护区间最值,折半搜索就是先搜前10个,然后搜后10个,搜前10个的时候把每一个结果用一个pair<花费,权值>保存下来,然后按照花费排序,在第二次搜索的时候对于当前ww , vv需要的是一个前面搜索满足条件v<= ...
                            
                            
                                分类:
其他好文   时间:
2020-10-07 21:09:45   
                                阅读次数:
28
                             
                         
                    
                        
                            
                            
                                
                    51Nod-1494 选举拉票 权值线段树 题意 现要竞选市长。有$n$个选民投票。 每行两个数字$a_i,b_i$表示第$i$个选民投给$a_i$号候选人,必须花费$b_i$使他投你的票。 你是第0号候选人。 问最少花多少钱使你竞选成功。 \[ 1\leq n \leq 10^5\\ 0\leq  ...
                            
                            
                                分类:
其他好文   时间:
2020-10-06 21:07:49   
                                阅读次数:
28
                             
                         
                    
                        
                            
                            
                                
                    9.26 H.HDU 6562 线段树操作特点:1.能统计出一个操作对一个区间整体的影响;2.能通过标记表示出该操作对左右子区间的影响;3.标记的含义为子区间应当进行的操作,标记应当能够合并(具有先后顺序)。此题中我们维护区间\(10^{a}\) 的和,则区间的值的增加量为 \(d * 10^{a} ...
                            
                            
                                分类:
其他好文   时间:
2020-10-06 20:45:51   
                                阅读次数:
25
                             
                         
                    
                        
                            
                            
                                
                    题目链接 Solution 对每个节点维护一个权值线段树,线段树上就维护最大值以及最大值出现的节点。利用树上查分的思想,在 \(x\),\(y\) 位置 \(+1\),在 \(LCA(x, y)\) 位置 \(-1\),\(fa_{LCA(x, y)}\) 位置 \(-1\)。 更新完后不断把线段树 ...
                            
                            
                                分类:
其他好文   时间:
2020-10-06 20:09:52   
                                阅读次数:
28
                             
                         
                    
                        
                            
                            
                                
                    树状数组小结 背景 树状数组本质是区间前缀和,但是众所周知,暴力和前缀和各有优缺点…… (图片中本来是线段树的,但是其实差不多吧) 所以诞生了树状数组这个东西。 树状数组分为以下几步 声明部分 #include <iostream> #include <algorithm> #include <cs ...
                            
                            
                                分类:
编程语言   时间:
2020-09-21 11:52:34   
                                阅读次数:
54
                             
                         
                    
                        
                            
                            
                                
                    题目描述 题解 知道是分块之后就不难了 把n分块,对于整块建AC自动机暴力跑,散块把全部串建AC自动机之后可以线段树查子树(因为往上查要考虑那些能查那些不能所以不好搞),也可以递归子树时用 出-入 计算 空间卡一卡可以$n\sqrt n$,如果再把询问[L,R]前缀和一下之后也许可以做到线性 时间O ...
                            
                            
                                分类:
其他好文   时间:
2020-09-21 11:52:07   
                                阅读次数:
32
                             
                         
                    
                        
                            
                            
                                
                    数据结构 并查集 线段树 无旋Treap 数学 拉格朗日插值法 ...
                            
                            
                                分类:
其他好文   时间:
2020-09-18 01:56:05   
                                阅读次数:
26
                             
                         
                    
                        
                            
                            
                                
                    给出一个序列,m个查询,每次查询区间是否是$[1, r - l + 1]$的排列 判断是否是排列: 即每个数字只出现一次 区间和是$\frac{n * (n + 1)}{2}$,n是区间长度。 判断每个数字是否只出现一次,可以预处理每个数之和第一次出现这个数字的位置,如果没有那么设置为0,然后用线段 ...
                            
                            
                                分类:
其他好文   时间:
2020-09-18 00:02:53   
                                阅读次数:
30
                             
                         
                    
                        
                            
                            
                                
                    题目链接:#6277. 数列分块入门 1 题目大意 给出一个长为 \(n\) 的数列,以及 \(n\) 个操作,操作涉及区间加法,单点查值。 solution 我们可以用树状数组和线段树来过掉他, 但是这是一道分块的题,那我们就要用分块来 \(A\) 掉它 查询操作: 我们可以直接记录一下块的操作, ...
                            
                            
                                分类:
其他好文   时间:
2020-09-17 20:04:26   
                                阅读次数:
37