随笔分类 - 日常总结
竞赛学习
摘要:基础部分 有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: 共有 种硬币。面值分别为 。 某人去商店买东西,去了 次,对于每次购买,他带了 枚 种硬币,想购买 的价值的东西
阅读全文
摘要:容斥的最直接的想法就是给算重了的东西填上系数,使得不合法的东西都算了 次,然后合法的东西都算了 次( 为常数, 当然最好)。 要证明一种容斥是对的,就考察任意一个对象,验证其计数次数是否符合要求即可。 普通容斥 对于一个集合 的一部分子集构成的簇 \(
阅读全文
摘要:bitset优化暴力很有用,这里记一下bitset的用法。 基本知识 求解高维偏序 优化存在性背包 其他待补
阅读全文