合集-【算法学习】

摘要:排序这个东西真的挺卷的,有些就追求极致的速度,有些追求极致的简洁,有必要学一学提一提,尽管 \(sort\) 能解决绝大部分问题。 学习笔记 冒泡排序 mpft 第一个学的排序也是最简单的排序,也就是一个一个比较,如果右边的数大于左边的数就交换,我当初老师说这一个一个交换是不是就像冒泡一样,那确实哈 阅读全文
posted @ 2024-08-27 19:51 sad_lin 阅读(8) 评论(0) 推荐(0) 编辑
摘要:定义 Manacher 马拉车,一种为了求字符串中最长的回文字串的算法。 暴力 这个算法是从暴力的方法转化过来的,暴力肯定是枚举字符串每个字符作为中心,然后向外扩展,这样的复杂度为 \(O(n^2)\)。 特殊处理 而 Manacher 则是按照回文对称的性质的进行优化的,首先回文串有奇数串 \(a 阅读全文
posted @ 2024-08-29 09:51 sad_lin 阅读(57) 评论(1) 推荐(2) 编辑
摘要:学习笔记 我认为我这个算法可能无法讲明白,而且工作量巨大,所以为了让你快速学会我推荐学习下列笔记。 学习笔记1 学习笔记2 学习笔记3 放个模板 #include <bits/stdc++.h> using namespace std; const int N=1e6+10; char a[N],b 阅读全文
posted @ 2024-09-01 19:57 sad_lin 阅读(13) 评论(0) 推荐(0) 编辑
摘要:概念 最近公共祖先简称 LCA(Lowest Common Ancestor)。两个节点的最近公共祖先,就是这两个点的公共祖先里面,离根最远的那个。 感觉其实看个图就懂了吧 图中例子 \(lca(u,v)=x;\) 这个问题理解概念不难,主要是学会如何计算,下面介绍三种方法。 方法 1.暴力法 朴素 阅读全文
posted @ 2024-08-30 08:35 sad_lin 阅读(116) 评论(2) 推荐(1) 编辑
摘要:1.线段不覆盖问题 给出 \(n\) 个线段,选择尽量多的线段使得选择的线段相互之间无重叠,问最多可以选多少条线段。 解析 考虑贪心,将线段按右端点从小到大排序,如果这条线段的左端点大于上一条线段的右端点那就选择这条线段。 为什么这么贪是对的呢,因为将右端点排序可以使右边剩余的空间尽量大,那么剩余的 阅读全文
posted @ 2024-08-29 15:13 sad_lin 阅读(39) 评论(0) 推荐(0) 编辑
摘要:自从钻研这换根DP,犹如梁山好汉破了难关。初时只觉这树状结构,分枝繁复,变化多端,哪知竟有此等妙计。每换一根,便能高效算出新解,岂不似宋江指挥众兄弟,调度得当,事半功倍。更妙的是,这容斥之法,恰如兵法计策,分而治之,避开冗余。学之愈深,愈觉精妙,心中豪气顿生,恨不得与众学者痛饮一场,论此技之神通。 阅读全文
posted @ 2024-09-20 12:27 sad_lin 阅读(12) 评论(0) 推荐(0) 编辑
摘要:原题链接 好讲解 好代码 匈牙利算法,每次匹配抛弃原有,选择新有。 #include <bits/stdc++.h> using namespace std; int n,m,c; int v[505][505]; int ask[505]; int matched[505]; int ans; i 阅读全文
posted @ 2024-09-17 22:19 sad_lin 阅读(4) 评论(0) 推荐(0) 编辑
摘要:前言 其实 01bfs 就是用队列维护的最短路,在权值只有 \(0\) 和 \(1\) 时就可以把权值为 \(0\) 的方案放到队列最前,权值为 \(1\) 的则放到最后,然后进行搜索,保证高效和正确性。 P4554 小明的游戏 模板题。 大部分 bfs 题都可以用最短路做,而最短路中 dijkst 阅读全文
posted @ 2024-09-17 13:17 sad_lin 阅读(20) 评论(0) 推荐(0) 编辑
摘要:P1892 [BOI2003] 团伙 种类并查集!!!! 存敌人 主要要理解敌人的敌人就是朋友这句话,我们就可以用并查集来维护朋友,用一个数组来储存他的其中一个敌人,后面遇到其他他的敌人时,将他的敌人用并查集连起来成为朋友。 注意这题要你输出团队数而不是团队的人数不会就我这么唐吧。 #include 阅读全文
posted @ 2024-09-11 16:05 sad_lin 阅读(8) 评论(0) 推荐(0) 编辑
摘要:模板题 我写不明白我要用其他人的学习笔记 这个 其实也没法写,真要一步步写很复杂。 无非就是依次将每个数减掉系数,最后成为一个单位矩阵。 所以看注释: #include<bits/stdc++.h> using namespace std; #define ll long long const in 阅读全文
posted @ 2024-09-10 11:18 sad_lin 阅读(22) 评论(0) 推荐(0) 编辑
摘要:前置 博客学习 \(P(A∩B)\) 表示事件 \(𝐴\) 和事件 \(𝐵\) 同时发生的概率 条件概率: 条件概率是指事件 \(A\) 在另外一个事件 \(B\) 已经发生条件下的发生概率。条件概率表示为:\(P(A|B)\),读作“在B的条件下A的概率”。——《百度百科》 条件概率: \[P 阅读全文
posted @ 2024-09-07 09:59 sad_lin 阅读(53) 评论(0) 推荐(1) 编辑
摘要:01 背包 \(n\) 件物品,每件物品有权值和重量,给出背包体积 \(V\),从这些物品中挑选若干件(只能选一次)放入背包,使得背包内物品的总重量不超过 \(V\),问能可以得到的最大权值。 设 \(dp[i][j]\) 选取前 \(i\) 件物品重量为 \(j\) 能取得的最大的权值,可以得到转 阅读全文
posted @ 2024-09-05 21:35 sad_lin 阅读(7) 评论(0) 推荐(1) 编辑
摘要:P1337 吊打XXX SA 无疑就这几个步骤。 设初温 t; 降低系数 down<1 设定阈值 更劣随机概率选择(温度越低,概率越低) AI 评价: #include<bits/stdc++.h> using namespace std; #define down 0.996 //降低系数 int 阅读全文
posted @ 2024-09-05 16:15 sad_lin 阅读(6) 评论(0) 推荐(0) 编辑
摘要:基环树,环套树,化环为树,树形dp。 阅读全文
posted @ 2024-10-29 19:25 sad_lin 阅读(22) 评论(0) 推荐(0) 编辑
摘要:树链问题通常是关于树上路径的操作,将路径拆分成一条条链,然后用线段树维护链的权值。 阅读全文
posted @ 2024-10-29 10:57 sad_lin 阅读(11) 评论(0) 推荐(0) 编辑
摘要:暴力骗分神器,神仙题的最终杀招!!(也许吧,可能说的有点夸张) 阅读全文
posted @ 2024-10-29 08:37 sad_lin 阅读(8) 评论(0) 推荐(0) 编辑
摘要:分块入门强烈推荐做的题!!! 阅读全文
posted @ 2024-10-28 08:37 sad_lin 阅读(12) 评论(0) 推荐(0) 编辑
摘要:数据结构,虽然平衡树有很多种,但本文只介绍 FHQ treap 阅读全文
posted @ 2024-10-23 21:21 sad_lin 阅读(10) 评论(0) 推荐(0) 编辑
摘要:化图论为树论,天圆地方一成不变。 阅读全文
posted @ 2024-10-22 10:25 sad_lin 阅读(18) 评论(0) 推荐(0) 编辑
摘要:感觉非常有深度,感觉过几天就又要忘了,所以我写个题解。 P3806 【模板】点分治 1 给定一棵有 \(n\) 个点的树,询问树上距离为 \(k\) 的点对是否存在。 题意非常简单 题意越短越毒瘤。 大佬原文 我们先想想点对有几种情况: 第一种是经过根节点的路径; 第二种是不经过根节点的路径; 想第 阅读全文
posted @ 2024-10-11 09:07 sad_lin 阅读(14) 评论(0) 推荐(0) 编辑

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