
基础算法
文章平均质量分 67
包含搜索、分块、莫队、分治、二分等基础算法
Edward The Bunny
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[复健计划][紫书]Chapter 7 暴力求解法
如果某问题的解可以由多个步骤得到,而每个步骤都有若干种选择(这些候选方案集可能会依赖于先前作出的选择),且可以用递归枚举法实现,则它的工作方式可以用。,n-1}的子集S:从右往左第i位(各位从0开始编号)表示元素i是否在集合S中。个结点,所有部分解(不完整的解)也对应着解答树上的结点,最后几层结点数占整棵树的绝大多数。构造一个位向量B[i],而不是直接构造子集A本身,其中B[i]=1,当且仅当i在子集A中。当用二进制表示子集时,位运算中的按位与、或、异或对应集合的交、并和对称差。原创 2024-11-07 22:09:08 · 548 阅读 · 0 评论 -
前缀和 & 差分
前缀和方便查询区间和,差分方便进行区间修改。原创 2024-07-08 13:23:55 · 926 阅读 · 0 评论 -
搜索的优化
在搜索过程中,如果我们能够得知搜索树的当前节点沿着某几条不同分支到达的子树是等效的,那么只需要对其中一条路径进行搜索。在一些问题中,搜索树的各个分支之间的顺序是不固定的。不同的搜索顺序会产生不同的搜索形态,规模也相差甚远。极端法:考虑极端情况,如果最极端(最理想)的情况都无法满足,那么肯定实际情况搜出来的结果不会更优了。数学方法:比如在图论中借助连通分量,数论中借助模方程的分析,借助不等式的放缩来估计下界等等。在搜索过程中,每次对当前状态进行检查,如果发现不可能到达递归边界,就执行回溯。转载 2024-06-30 08:52:21 · 100 阅读 · 0 评论 -
[XSY3112] 接水果(树上包含路径,整体二分,扫描线)
给出一棵nnn个点的树。接下来给出PPP条树上路径ai→bia_i\to b_iai→bi,及其权值cic_ici。最后有QQQ个询问,每个询问给出一条树上路径ui→viu_i\to v_iui→vi,问在包含ui→viu_i\to v_iui→vi的所有树上路径中(包含指ui→viu_i\to v_iui→vi是ai→bia_i\to b_iai→bi的子路径),权值第kkk小的路径权值是多少?不妨设dep[u]<dep[v]dep[u]<dep[v]dep[u]<原创 2021-11-19 12:05:52 · 152 阅读 · 0 评论 -
[XSY3382] 专家系统(二分+线段树)
XSY3382二分ccc,问题变成能否用一个长ccc宽ccc的矩形框住至少kkk个点。二维数点问题考虑用扫描线解决。将所有点按照xxx从小到大排序。枚举一段xxx坐标相差不超过ccc的点(双指针推进),初始想法是根据这些点的yyy值建一棵权值线段树,维护yyy值在某段区间内的点的个数,然后判断能否找到一段长度为ccc的区间,包含了至少kkk个点。但发现很难进行下去,所以换一个想法,定义aia_iai为yyy值在区间[i,i+c][i,i+c][i,i+c]内的点的个数,根据yyy值建权值线段树,维原创 2021-10-02 11:33:40 · 157 阅读 · 0 评论 -
[XSY]Tree Ext(矩阵树定理,拉格朗日插值,最小生成树,二分)
Tree Ext这道题相当于把3道题合了起来。要求修复的边中恰好有 k 条白边:五颜六色的幻想乡(附拉格朗日插值法求多项式系数 )+bzoj2654 tree(WQS二分 新科技get)是最小生成树计数而非生成树计数:BZOJ1016」[JSOI2008] 最小生成树计数具体可以看看这篇博客,代码中的注释也解释得较清楚#include<bits/stdc++.h>#define int long longusing namespace std;const int mod=原创 2021-07-21 10:05:38 · 241 阅读 · 0 评论 -
[XSY] 计数(DP,NTT,分治)
计数考虑转化题目,变为网格上有若干个点,要从(0,0)(0,0)(0,0)走到(n,an+1)(n,a_{n+1})(n,an+1) ,每一步只能往右走一步或往上走一步,且若当前在(i,j)(i,j)(i,j) ,必须满足0≤j≤ai+10\leq j\leq a_{i+1}0≤j≤ai+1,其中an+1=ana_{n+1}=a_nan+1=an 。要对每个kkk求出有多少条恰走过kkk次形如(i,ai+1)→(i+1,ai+1)(i,a_{i+1})\to(i+1,a_{i+1})(i,ai+原创 2021-03-23 22:05:16 · 369 阅读 · 0 评论 -
CDQ分治与整体二分
首先说明,CDQ分治与整体二分都是离线算法CDQ分治:流程:1.我们要解决一系列问题,这些问题一般包含修改和查询操作,可以把这些问题排成一个序列,用一个区间[L,R]表示。2.分。递归处理左边区间[L,M]和右边区间[M+1,R]的问题。3.治。合并两个子问题,同时考虑到[L,M]内的修改对[M+1,R]内的查询产生的影响。即,用左边的子问题帮助解决右边的子问题。经典问题:三维偏序#include<iostream>#include<cstdio>#include&原创 2021-03-08 21:14:38 · 332 阅读 · 0 评论 -
[CF966E] May Holidays(树上数据结构问题、分块+虚树)
Description一个 n 个结点的有根树,每个结点 x 有一个值 txt_xtx,和一个颜色 (黑/白)。m 次操作:翻转某点颜色。询问有多少点 x 满足:x 为黑色,x 的白色后代数 > tx。n, m ≤ 10510^5105Solution令 wi = ti− 子树内白点数,那么询问就是 wi < 0 的黑点数,修改就是翻转颜色并将至根路径的w值+1/ − 1。思来想去好像没有什么奇妙的数据结构能在O(nlogn)O(nlogn)O(nlogn)或O(nlog原创 2021-02-04 16:52:53 · 205 阅读 · 0 评论