随笔分类 - 学习笔记
摘要:Prim最小生成树算法,以任意节点为根,找出与之相邻的所有便,再将新节点更新并以此节点为根继续进行,dis为已用点到未用点的最短距离。适用于稠密图,时间复杂度O(N^2)。 inline int prim(){ memset(vis,0,sizeof(vis)); memset(dis,0x3f,s
        阅读全文
                
摘要:二分图带权匹配的前提是匹配数最大,KM算法的前提是带权最大匹配一定是完备匹配。 顶点标记值,给左部点一个整数值a[i],给右部点一个整数值b[i],同时必须满足对于任意的i,j,a[i]+b[j]>=w(i,j),w(i,j)为i与j之间的边权,无边是为负无穷,a[i]和b[i]称为节点的顶标。 若
        阅读全文
                
摘要:基于分块思想,常用的有数列分块,之间分块,以及值域分块 把一个数组分为几个块,块内信息整体保存,两边散块进行暴力 首先进行分块 int len=sqrt(n);/*选择块长,也可以手动调节*/ for(int i=1;i<=n;i++)bl[i]=(i-1)/len+1;/*每个点所属块的编号*/ 
        阅读全文
                
摘要:有n个变量,每一个变量都是bool类型的,除了这n个变量以外,还有m个关系表达式,关系表达式差不多是x1&x2=false。求能否给这n个变量找出一个赋值的方法,使得满足所有的表达式。 将每个变量x拆成false和true两个点。 假设x1&x2=false,则x1和x2必有一个=false,于是连
        阅读全文
                
摘要:分块优化vector实现平衡树,当一个vector的大小超过定长的一半时将其分裂一半,删除时进行合并操作。 但是,对于块长需要一定的人品,在数据范围1e6时,取sz=1000和1600可以,但是800或2000都不行。 template<const int sz=1600,const int inf
        阅读全文
                
摘要:SizeBalancedTree是通过维护节点大小来保持平衡的二叉搜索树,平衡的条件是任意节点的size不小于其兄弟节点的所有子节点的size。 重点在于时间复杂度均摊O(1)的maintain函数。 对于每个节点,若左子树的左子树的节点数大于右子树的节点,需要右旋根来平衡。 若左子树的右子树的节点
        阅读全文
                
摘要:$CDQ$分治常用于解决多维偏序关系问题,以三维为例,第一维可以排序解决,第二维进行分治,第三位常用数据结构(树状数组)维护,于是也可以将动态带修改问题,离线处理,常默认时间为第一维。 由于许多时候同一个操作要分成多个操作来解决,所以要格外注意结构体数组的大小是否恰当,同时留意树状数组的边界。 $C
        阅读全文
                
摘要:用于求解具有单调性的从一堆物品中恰好选$need$个且满足权值最大/小化等要求的问题。 无向带权连通图,每条边是黑色或白色。求一棵最小权的恰好有$need$条白色边的生成树。 二分给白边加上的权值,加的权值越大,最小生成树中白边数量越少,明显具有单调性。 #include<bits/stdc++.h
        阅读全文
                
摘要:点分治适用于处理大规模的无修改的树上路径信息。 钦定一个点作为根节点,路径有且仅有两种情况: 经过根节点,即由两颗子树构成 不经过根节点,即只在根节点的一颗子树之中 对于情况1,直接计算即可。对于情况2,我们需要枚举其它点作为根来计算这种情况,为了让递归枚举根的层数最少,我们选择每次选择子树的重心作
        阅读全文
                
摘要:整体二分是将所有操作离线下来,对多组询问同时进行二分。 将所有操作按照时间顺序存入数组,设$[st,ed]$为答案的定义域,即询问的区间,$[l,r]$为答案的值域。 二分答案的值域,对于每个询问去比较和$mid$的关系,据此判断是递归进入值域$[l,mid]$还是值域$[mid+1,r]$,当$l
        阅读全文
                
摘要:左偏树是可并堆的一种,支持在O(log2(N))的时间复杂度内进行合并的堆式数据结构。 定义外结点:lc或rc为空结点。 定义零距离:x的距离dis[x]为x子树内与x最近的外结点到x的距离,空结点dis=-1. 左偏树具有堆性质,若为小根堆,对于所有x,v[x]<=v[lc],v[x]<=v[rc
        阅读全文
                
摘要:最小斯坦纳树,是在无向图中,花费最小的代价,联通给定的k个关键点,组合优化问题 答案一定是一棵树,若存在环,则其中任意一条边可以删去且答案变小 状压dp,设f[i][s]为以i为根的子树包含几何状态s的最小花费,分类讨论转移: 1. i的度数为1,枚举树上与i相邻的点j,用f[j][s]+f[j][
        阅读全文
                

 浙公网安备 33010602011771号
浙公网安备 33010602011771号