12 2024 档案
摘要:常常用于维护颜色段。随机数据下表现优秀,但构造数据随便卡。一定要看是否保证了数据随机。 前置 STL之set。年少不学STL,学珂朵莉树两行泪。 set内部是红黑树,内部不会出现值相同的元素。可重集使用multiset,用法基本与set一致。 插入删除 以下简写set<type>::iterator
阅读全文
摘要:简单的是真简单,难的几乎到天花板。 约定一般 表示原串长度, 为字符集。 定义 字符串的一段前缀能和一段后缀完全匹配(非原串),则称这个前缀/后缀为原串的一个Border。 对任意合法 , ,则称 为原串的一个周期。\(p\mid
阅读全文
摘要:菜就多练。 贪心和构造有一定相似性(都不会做),放在一起做吧。 1. [ABC123D] Cake 123 link 热身简单题。利用堆进行贪心。 发现排序后都取端点一定是最值,然后随便一个序列中向后挪一个位置都有可能是次大值。 于是用堆维护,每次弹出最大的,然后向后拓展三个状态塞到堆里面。注意可能
阅读全文
摘要:做题。太菜了只会一些水的qwq。 1. P5020 [NOIP2018 提高组] 货币系统 link 就是从给的一组基里面去掉几个,使得剩下的线性无关。 直接完全背包跑一遍,如果一个数能被多于一种方案表示出来(除了自己表示自己),那么就可以去掉。 ,勉强过。 2.
阅读全文
摘要:朴素DP都写不出来怎么办捏qwq 纵观各种优化方式,可以发现DP的优化在于两个方面:转移和状态数。 转移的优化很多,大多数的优化都关注于转移。而状态数的优化大多是针对状态的设计。 一类特殊的DP:整体DP,试图兼顾这两个方面,利用DS囊括各种DP的状态时,同样利用DS的结构将具有相同转移的状态一起转
阅读全文
摘要:各种图的计数 有标号无根树 Prüfer序列 引入强而有力的Prüfer序列。 将一棵 个节点从 到 标号的无根树用 中的 个整数表示。可以理解为完全图的生成树与数列之间的双射关系。 其建立 每次选编号最小的叶子,记录它连向的点的编号,并删除这个叶
阅读全文
摘要:有各种分治:CDQ分治,树上分治,数据结构上分治,根号分治,etc. 普通分治 求逆序对 用归并排序求逆序对。 Sol: 其实逆序对是在归并排序时顺带求的,主要是归并排序。 我们要对区间 从小到大排序,先对 排序(这一步体现分治思想)。 现在考
阅读全文
摘要:每次都选当下的最优解,一步步得到全局的最优。 菜就多练 贪心练习 方法 邻项交换法 反悔贪心 拟阵 典中典 邻项交换例子 luogu国王游戏 恰逢 H 国国庆,国王邀请 位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让
阅读全文
摘要:一些数具有特殊的意义,或是特殊的性质。 错排数 记作 。 如何求? 容斥做法 \[d_n=n!-\sum\limits_{1\le k\le n}(-1)^{k-1}\dbinom{n}{k}(n-k)!=n!\sum\limits_{0\le k\le n}(-1)^k\dfrac{1
阅读全文
摘要:《Concrete Mathematics》 Chapter 1. OI中递归的东西见的确实挺多的。
阅读全文
摘要:不知道以后这里是不是只有Lagrange插值。很大概率是的。 Lagrange插值 给出 个点 ,求确定的 次多项式。 Sol: 利用点值的可加性,先构造出 个 使之满足在 处取 ,在\(x\ne x_
阅读全文
摘要:对OI使用计数吧!(碰拳)(阿格尼笑) 除了数学的纯粹力量之外,还需要DP和多项式的辅助。 数学基础 加法原理,乘法原理,排列组合。 容斥和计数DP 容斥技巧 容斥+计数的练习 反演 自个儿写的炫酷反演魔术 生成函数 生成函数 Polya和Burnside 图计数 图计数
阅读全文
摘要:不得不整理数学了,感觉学了很多,但又没学很多。 递归问题 递归问题 和式 和式 整值函数 整值函数 数论 数论 二项式系数 二项式系数 特殊的数 特殊的数 生成函数 生成函数 离散概率 概率期望 渐进式 暂时咕咕咕。
阅读全文
摘要:多项式科技 多项式全家桶 高等数学 高等数学 数值算法 各种数值算法 线性代数 线性代数 数论相关技术 数论 组合数学 组合数学 具体数学 具体数学 计数问题 计数!计数! 概率统计 概率和期望不得不说的故事 渐进估计 Master Theorem
阅读全文
摘要:这里可能包括但不限于树套树。 总之是一棵树上每个结点又套了点别的什么东西。 拜谢lxl 坑开在这儿了,以后填吧。 代码复杂度比较高,建议想明白了再开始敲。 可以用来动态维护二维平面上的信息。 结构是DAG,一般不支持标记下方。但是可以标记永久化。 BIT套树 最好写的。但是也难写。 BIT套平衡树可
阅读全文
摘要:咕咕咕。 学会了一点了。 KDT维护了 维空间中的超长方体。每个结点及其子树都在同一超长方体中。 KDT的实现与平衡树类似(其实在 时就是另类的平衡树,只不过不太优秀)。树上的每个结点都对应着 维空间中的一个点。然后随便维护一下信息就可以支持 维超长方体查询信息了
阅读全文
摘要:从BST引入。 我们要高效查找一个值,那么在保证左儿子小于右儿子的二叉树上跳,期望 , 为深度。 二叉搜索树BST 最好 ,最坏 。 左子树的权值小于根的权值小于右子树的权值。 P用没有。 替罪羊树 是一种依靠重构来维持平衡的重量平衡树。在
阅读全文
摘要:来解决树上DS问题。 因为没有能够直接高效维护树型结构的DS,于是把树剖分成链,然后拿序列上的DS去维护每一条链的信息。 树链剖分有很多种:轻重链剖分,长链剖分,虚实链剖分。 轻重链剖分 这里是轻重链剖分。常数很小。 其实不一定要用线段树维护,但用线段树维护是最常见的。 支持换根,路径修改,路径查询
阅读全文
摘要:一大波线段树和树状数组预警。 树状数组基础部分 Binary Indexed Tree.BIT 线段树可以实现树状数组所有功能,但树状数组简单易写常数小。 树状数组利用了二进制数的特性,很精巧。 注意到一件事,若将当前点下标从低到高第一个 记作 ,那么当前点的范围即包含当前点的前面长
阅读全文
摘要:典型的是字符串Trie,但是那是字符串里该讲的。 但是结构还是类似的。 01Trie 将一个二进制数插入到Trie中,每条边代表着 。 建树可以从高位到低位,也可以从低位到高位。看题目需要。 维护异或极值 从高位到低位建树。 对于一个数,考虑当前二进制位上的数字,尽量往相反的方向跳,跳了
阅读全文
摘要:线性的基本数据结构 栈 先进后出,没啥好讲的,主要是应用。 关于表达式 栈可以做表达式相关的问题。 几个名词: 逆波兰式是后缀表达式,波兰式是前缀表达式。 后缀表达式求值 可以用栈做到 。 建立一个栈,储存表达式中的数字。 2.从前往后扫后缀表达式。遇到数字就入栈,遇到运算符就从栈中取
阅读全文
摘要:基础部分 最大流 Dinic 板子 #include<bits/stdc++.h> using namespace std; typedef long long ll; #define gc getchar ll rd(){ ll f=1,r=0; char ch=gc(); while(!isdi
阅读全文
摘要:Bipartite Graph. 无特殊说明时, 为点数, 为边数。 基础部分 定义和判定 点集可以分成两个集合,任意一个集合内部没有边。 性质:没有奇环。这是充要条件。用这个来 来判定二分图。 二分图最大匹配 P3386 【模板】二分图最大匹配 可Dinic\(O
阅读全文
摘要:基础部分 有K-Satisfiability问题,但 时那是NPC的, 时是trivial的,所以讨论2-Satisfiability。 问题是这样的: 个bool变量, 个限制条件,每个限制会给出对于两个bool变量之间关系的描述,如\(a_i\lor
阅读全文
摘要:基础部分 DFS生成树 在有向图中,DFS生成树有 种边: 树边:每次搜索找到一个还未访问过的节点时就形成了一条树边。 返祖边:搜索时遇到在树上的祖先节点,指向祖先的边。 横叉边:搜索时遇到已访问过的节点,但该节点不是当前节点的祖先,就形成了一条横叉边。 前向边:搜索时遇到了子树内的点,形成
阅读全文
摘要:拓扑排序 概念: DAG:有向无环图。 拓扑排序可以对一张DAG上的顶点排序。 流程: 最初将入度为 的点加入队列。 每次从队列中取出一个点,删去这个点的所有出边,将新产生的入度为 的点加入队列。这样按入队的先后顺序就把顶点排好序了。 。 拓扑排序在后的点只依赖于
阅读全文
摘要:基础部分 概念: 欧拉回路:经过每条边恰好一次的回路(回到起点)。 欧拉通路:经过每条边恰好一次的通路(不回起点)。 欧拉图:具有欧拉回路的图。 半欧拉图:不具有欧拉回路,但具有欧拉通路的图。 有向图强连通:任意两个顶点都可以通过有向边相互到达。 有向图弱连通:将有向边换成无向边后,任意两个顶点连通
阅读全文
摘要:注意只有连通图才有生成树,图不连通就只有生成森林。 最小生成树的板子 Kruskal 基本思想是按边权从小到大加边,是贪心思想。 时间复杂度 。 板子 sort(e+1,e+tot+1,cmp); for(int i=1;i<=tot;++i){ int u=e[i].u,
阅读全文
摘要:差分约束 用于求有 个变量, 条限制,每条限制只与两个变量的差有关的问题的一组解。 一般可以转化为最短路或者最长路解决。 最短路:用三角形不等式 来保证解合法,这样一条不等式等价于 。 最长路:类似最短路,用\(di
阅读全文
摘要:板子是一定要记的,但不够,全是思维题,要解放思想开动脑筋。 板子 Floyd 是全源最短路。 只要最短路存在(无负环),不管有向无向,边权正负,都可以用。 板子 for(int k=1;k<=n;++k){ for(int i=1;i<=n;++i){ for(int j=1;j<=n;++j) d
阅读全文
摘要:菜就多练。 朴素的容斥原理应用 I.P1450 [HAOI2008] 硬币购物 Q: 共有 种硬币。面值分别为 。 某人去商店买东西,去了 次,对于每次购买,他带了 枚 种硬币,想购买 的价值的东西
阅读全文
摘要:容斥的最直接的想法就是给算重了的东西填上系数,使得不合法的东西都算了 次,然后合法的东西都算了 次( 为常数, 当然最好)。 要证明一种容斥是对的,就考察任意一个对象,验证其计数次数是否符合要求即可。 普通容斥 对于一个集合 的一部分子集构成的簇 \(
阅读全文