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

浙公网安备 33010602011771号