随笔分类 - 之前的比赛题目 / 算法从0开始
摘要:思路来源:Zed222 如果一个区间里的数都有这个质数,那么我们就直接利用性质,如果没有这个区间中有没有这个质数的,那么就退化到了单点修改,当时比赛的时候,队伍感觉就没有了头绪,而今天补题发现确实是单点修改,并且代码跑的飞快,具体的证明就不深究了
阅读全文
摘要:原题链接:AtCoder F - Parenthesis Checking 一个全由构成的字符串,由以下两个操作: 1 l r交换字符串第个和第个字符。 2 l r询问是否是一个合法序列。 很明显是一个线段树操作,这题蓝桥杯貌似有类似的,但是那道
阅读全文
摘要:本博客的主要思路来源:树链剖分详解(洛谷模板 P3384)、OI Wiki 树链剖分 作用 简单点说,树链剖分就是将一棵树分成几条链,然后给它标号标成线性,然后处理区间问题: 将树的点到点最短路径上所有结点的值都加d 询问树的点到点的路径和 将以为根的子树内所有值加$d
阅读全文
摘要:换根属于树形,是二次扫描,因为这类问题通常不会指定根结点,并且根节点的变化会对一些值,例如子结点深度和、点权和等产生影响。 通常需要二次,第一次来处理深度,以及点权和之类的问题,第二次开始动态规划。 令为当前结点,为当前结点的叶子结点。首先需
阅读全文
摘要:原题链接 Codeforces Global Round 16 E. Buds Re-hanging 首先想到,如果我们把一个挂到一个叶子上,那么会使得叶子总数减。 还有就是如果我们可以把这个树搞成一条链,那么总叶子数一定是最少的,就是让树“越瘦越好”。 如果原来一个挂
阅读全文
摘要:原题链接:AcWing 240. 食物链 扩展域与边带权的并查集: 并查集实际上是由若干颗树构成的森林,我们可而一再数中的每条边上记录一个权值,即维护一个,用保存节点到父节点之间的边权。每次路径压缩之后,每个访问过的节点都会直接指向树根,然后同时更新这些节点的$
阅读全文
摘要:原题链接AcWing 456. 车站分级 抽象出题意,停靠过的车站的等级一定严格大于为停靠过的车站的等级,且不存在环,例如车站等级大于车站,则,不妨从向连一条边,表示等级关系,题目要求车站的最小等级中最大是多少,即求最长路,那这就是一个差分约束系统。
阅读全文
摘要:对于无向图,所有边都是联通的: (1)存在欧拉路径的充分必要条件:度数为奇数的点只能有个或个,如果起点和终点后重合那么度数为奇数的点就只能有个,否则就只能有两个。 (2)存在欧拉回路的充分必要条件:度数为奇数的点只能有0个。 对于有向图,所有边都联通: (1)存在欧拉路径的充分必要
阅读全文
摘要:二分图 不存在长度为奇数的环 为了描述方便将两个集合分成左和右两个部分,所有匹配边都是横跨左右两个集合,可以假想成男女配对。 增广路径: 从非匹配点出发,经历非匹配边,匹配边,非匹配边,匹配边,...,非匹配点的一条路径。 二分图的一组匹配是最大匹配,当且仅当图中不存在的增广路。 求二分
阅读全文
摘要:给定 本书,编号为 1∼n。 在初始状态下,书是任意排列的。 在每一次操作中,可以抽取其中连续的一段,再把这段插入到其他某个位置。 我们的目标状态是把书按照 1∼n 的顺序依次排列。 求最少需要多少次操作。 解: 考虑每一步决策数量,当抽取长度为 的一段时,有 \(n -
阅读全文
摘要:原题链接:AcWing 168. 生日蛋糕 设当前体积是分别记录每层的高度和半径,由于整个蛋糕的上表面面积等于最大蛋糕的圆面积,所以枚举到最大一层的时候直接加上即可。 **优化搜索顺序:**搜数量小的分支,可以从蛋糕最下边一层开始搜索,因为最下边一层占体积最大,然后对于枚举半径和
阅读全文
摘要:原题链接 India Fights Corona 题意: 有个城市,条道路,其中有些城市自己有医院,所以可以在自己城市做核酸检测,那么花费就只有就医费用,而对于那些自己没有医院的城市,需要去别的城市就医,那么他们需要花的费用就是就医费 + 路费,问最小花费是多少。 题解: 之前只写过多源
阅读全文
摘要:剪枝常用策略: **优化搜索顺序:**可以先搜规模小的分支。 **排除等效冗余:**例如对于一个组合型枚举,与这是一样的,所以可以排除一下。 **可行性剪枝:**搜索过程中及时对状态进行检查,发现分支不符合本意,即提早发现是一个死胡同,就剪掉; **最优性剪枝:**如果当
阅读全文
摘要:题意 给定一张 个点(编号 ), 条边的有向图,求从起点 到终点 的第 短路的长度,路径允许重复经过点或边。 注意: 每条最短路中至少要包含一条边。 由于直接搜索空间特别大,所以考虑算法 以从点到终点
阅读全文
摘要:原题:八数码 在八数码中,估价函数就是所有数字在state中的位置与目标位置end中的位置的曼哈顿距离之和,即: \[ f(state) = \sum\limits^8_{i = 1} ( |state \_x_i - end \_x_i | + |state \_y_i - end \_y_i |
阅读全文
摘要:启发式搜索 A* 从用优先队列的开始想,优先队列的策略显然不够完善,因为我们只在乎当前代价很小,而对于未来的搜索中,代价可能会更大,而那先当前代价大的在未来的代价中可能很小,所以为了提高搜索效率,可以对未来产生的代价进行预估,即估价函数,我们仍然维护一个堆,那么每次从堆中取出的就
阅读全文