随笔分类 -  之前的比赛题目 / 算法从0开始

摘要:思路来源:Zed222 如果一个区间里的数都有这个质数,那么我们就直接利用性质ϕ(np)=ϕ(n)p,如果没有这个区间中有没有这个质数的,那么就退化到了单点修改,当时比赛的时候,队伍感觉就没有了头绪,而今天补题发现确实是单点修改,并且代码跑的飞快,具体的证明就不深究了 阅读全文
posted @ 2021-11-12 20:57 Xxaj5 阅读(81) 评论(0) 推荐(0) 编辑
摘要:计算一个式子:i=1nni。 很明显可以直接一个for循环,O(n)求出结果,但是我们可以将其优化到O(n)。 例题 AcWing199. 余数之和 给定正整数n和k,计算$(k \mod 1) + (k \mo 阅读全文
posted @ 2021-10-31 11:23 Xxaj5 阅读(82) 评论(0) 推荐(0) 编辑
摘要:原题链接:AtCoder F - Parenthesis Checking 一个全由(\(\))构成的字符串,由以下两个操作: 1 l r交换字符串第l个和第r个字符。 2 l r询问S[lr]是否是一个合法序列。 很明显是一个线段树操作,这题蓝桥杯貌似有类似的,但是那道 阅读全文
posted @ 2021-10-24 17:06 Xxaj5 阅读(58) 评论(0) 推荐(0) 编辑
摘要:本博客的主要思路来源:树链剖分详解(洛谷模板 P3384)、OI Wiki 树链剖分 作用 简单点说,树链剖分就是将一棵树分成几条链,然后给它标号标成线性,然后处理区间问题: 将树的x点到y点最短路径上所有结点的值都加d 询问树的x点到y点的路径和 将以x为根的子树内所有值加$d 阅读全文
posted @ 2021-10-23 21:36 Xxaj5 阅读(79) 评论(0) 推荐(0) 编辑
摘要:原题链接:E - LEQ 思路: 题目要求对于从数组1~n找出所有符合开头数字小于等于结尾数字的子序列,A=(A1,A2,...,Ak),满足A1Ak,很显然,我们只需要找到任何一对aiaj数对,然后它的贡献是$2^{j 阅读全文
posted @ 2021-10-06 19:57 Xxaj5 阅读(110) 评论(0) 推荐(0) 编辑
摘要:换根DP属于树形DP,是二次扫描,因为这类问题通常不会指定根结点,并且根节点的变化会对一些值,例如子结点深度和、点权和等产生影响。 通常需要二次DFS,第一次DFS来处理深度,以及点权和之类的问题,第二次DFS开始动态规划。 令u为当前结点,v为当前结点的叶子结点。首先需 阅读全文
posted @ 2021-09-30 18:10 Xxaj5 阅读(417) 评论(0) 推荐(0) 编辑
摘要:原题链接 Codeforces Global Round 16 E. Buds Re-hanging 首先想到,如果我们把一个buds挂到一个叶子上,那么会使得叶子总数减1。 还有就是如果我们可以把这个树搞成一条链,那么总叶子数一定是最少的,就是让树“越瘦越好”。 如果原来一个buds阅读全文
posted @ 2021-09-16 12:05 Xxaj5 阅读(76) 评论(0) 推荐(0) 编辑
摘要:数位DP 经过一天半的苦苦挣扎,真的很感谢Acwingyxc的讲解,终于感觉自己入门一些了。 数位DP通常是给定一个[L,R]\(\)[0,R]\(\)[0,L]的满足要求的数的个数 阅读全文
posted @ 2021-09-08 16:42 Xxaj5 阅读(72) 评论(2) 推荐(0) 编辑
摘要:原题链接:AcWing 240. 食物链 扩展域与边带权的并查集: 并查集实际上是由若干颗树构成的森林,我们可而一再数中的每条边上记录一个权值,即维护一个d,用d[x]保存节点x到父节点fa[x]之间的边权。每次路径压缩之后,每个访问过的节点都会直接指向树根,然后同时更新这些节点的$ 阅读全文
posted @ 2021-08-31 16:26 Xxaj5 阅读(70) 评论(0) 推荐(1) 编辑
摘要:原题链接AcWing 456. 车站分级 抽象出题意,停靠过的车站的等级一定严格大于为停靠过的车站的等级,且不存在环,例如车站A等级大于车站B,则A>=B+1,不妨从BA连一条边,表示等级关系,题目要求车站的最小等级中最大是多少,即求最长路,那这就是一个差分约束系统。 阅读全文
posted @ 2021-08-24 22:09 Xxaj5 阅读(108) 评论(0) 推荐(0) 编辑
摘要:对于无向图,所有边都是联通的: (1)存在欧拉路径的充分必要条件:度数为奇数的点只能有0个或2个,如果起点和终点后重合那么度数为奇数的点就只能有0个,否则就只能有两个。 (2)存在欧拉回路的充分必要条件:度数为奇数的点只能有0个。 对于有向图,所有边都联通: (1)存在欧拉路径的充分必要 阅读全文
posted @ 2021-08-23 21:50 Xxaj5 阅读(118) 评论(0) 推荐(0) 编辑
摘要:二分图 不存在长度为奇数的环 为了描述方便将两个集合分成左和右两个部分,所有匹配边都是横跨左右两个集合,可以假想成男女配对。 增广路径: 从非匹配点出发,经历非匹配边,匹配边,非匹配边,匹配边,...,非匹配点的一条路径。 二分图的一组匹配S是最大匹配,当且仅当图中不存在S的增广路。 求二分 阅读全文
posted @ 2021-08-22 21:41 Xxaj5 阅读(64) 评论(0) 推荐(0) 编辑
摘要:给定 n 本书,编号为 1∼n。 在初始状态下,书是任意排列的。 在每一次操作中,可以抽取其中连续的一段,再把这段插入到其他某个位置。 我们的目标状态是把书按照 1∼n 的顺序依次排列。 求最少需要多少次操作。 解: 考虑每一步决策数量,当抽取长度为 len 的一段时,有 \(n - 阅读全文
posted @ 2021-08-21 12:01 Xxaj5 阅读(47) 评论(0) 推荐(0) 编辑
摘要:原题链接:AcWing 168. 生日蛋糕 设当前体积是vhr分别记录每层的高度和半径,由于整个蛋糕的上表面面积等于最大蛋糕的圆面积,所以枚举到最大一层的时候直接加上即可。 **优化搜索顺序:**搜数量小的分支,可以从蛋糕最下边一层开始搜索,因为最下边一层占体积最大,然后对于枚举半径R阅读全文
posted @ 2021-08-18 19:24 Xxaj5 阅读(56) 评论(0) 推荐(0) 编辑
摘要:原题链接 India Fights Corona 题意: 有n个城市,m条道路,其中有些城市自己有医院,所以可以在自己城市做核酸检测,那么花费就只有就医费用,而对于那些自己没有医院的城市,需要去别的城市就医,那么他们需要花的费用就是就医费 + 路费,问最小花费是多少。 题解: 之前只写过多源 阅读全文
posted @ 2021-08-18 11:28 Xxaj5 阅读(36) 评论(0) 推荐(0) 编辑
摘要:剪枝常用策略: **优化搜索顺序:**可以先搜规模小的分支。 **排除等效冗余:**例如对于一个组合型枚举,123231这是一样的,所以可以排除一下。 **可行性剪枝:**搜索过程中及时对状态进行检查,发现分支不符合本意,即提早发现是一个死胡同,就剪掉; **最优性剪枝:**如果当 阅读全文
posted @ 2021-08-17 21:20 Xxaj5 阅读(46) 评论(0) 推荐(0) 编辑
摘要:原题连接:AcWing 190. 字串变换 题意: 已知有两个字串 A,B 及一组字串变换的规则(至多 6 个规则): A1B1 A2B2 规则的含义为:在 A 中的子串 A1 可以变换为 B1A2阅读全文
posted @ 2021-08-11 17:01 Xxaj5 阅读(53) 评论(0) 推荐(0) 编辑
摘要:题意 给定一张 N 个点(编号 1,2N),M 条边的有向图,求从起点 S 到终点 T 的第 K 短路的长度,路径允许重复经过点或边。 注意: 每条最短路中至少要包含一条边。 由于直接BFS搜索空间特别大,所以考虑A算法 以从x点到终点 阅读全文
posted @ 2021-08-11 16:51 Xxaj5 阅读(29) 评论(0) 推荐(0) 编辑
摘要:原题:八数码 在八数码中,估价函数就是所有数字在state中的位置与目标位置end中的位置的曼哈顿距离之和,即: \[ f(state) = \sum\limits^8_{i = 1} ( |state \_x_i - end \_x_i | + |state \_y_i - end \_y_i | 阅读全文
posted @ 2021-08-11 11:08 Xxaj5 阅读(344) 评论(0) 推荐(1) 编辑
摘要:启发式搜索 A* 从用优先队列的BFS开始想,优先队列的BFS策略显然不够完善,因为我们只在乎当前代价很小,而对于未来的搜索中,代价可能会更大,而那先当前代价大的在未来的代价中可能很小,所以为了提高搜索效率,可以对未来产生的代价进行预估,即估价函数,我们仍然维护一个堆,那么每次从堆中取出的就 阅读全文
posted @ 2021-08-11 11:01 Xxaj5 阅读(132) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示