摘要:
状压 dp 就是把状态压缩为一个数方便储存和处理,特点是 \(\Theta(2^{num})\) 的时间复杂度和大量的位运算操作。极小的特定数据上限使得面对相关题目时很容易想到使用此方法,不过具体如何处理还要思考。 在此声明本文的常用新定义: \(S,S'...\):我称作状压状态,表现为一个正整数 阅读全文
摘要:
不好吃的线段树半家桶。 权值线段树 本质是叶子节点下标意义的变化。 一般情况下,线段树的每条线段负责维护区间 $a_l\sim a_r$ 的信息。存在两个叶子节点 $tree_l,tree_r$,有 $tree_l.l=tree_l.r=l,tree_r.l=tree_r.r=r$。权值线段树表示为 阅读全文
摘要:
机房新来了一堆小孩,吵得要死,想把他们剁了。 板题 树剖核心:将树拆分为多个不相交的链,使用数据结构(线段树等)维护修改查询操作。 概念: 重儿子:子树根节点的儿子中,以这些儿子为根的子树节点数最多的那个儿子。 轻儿子:子树根节点的儿子中,除了重儿子以外的儿子。 重边:连接节点与其重儿子的边。 轻边 阅读全文
摘要:
这个真的好容易啊 yxc小课 个人总结出斜率优化一般步骤: 写出 $\Theta(n^2 )$的 1d/1d 转移方程:即状态与转移都是一维的方程 将dp式化为 $Y=K*X+B$ 的一次函数形式,尽可能保证斜率 $K$ ,自变量 $X$ 的单调性,将本轮答案 $dp[i]$ 置于由常数和只与 $i 阅读全文
摘要:
我癌症晚期级别的dp力还敢写起小结来了,令人忍俊不禁。 烽火传递 显然这是一道dp。 显然有方程 $$ dp[i]={ dp[i-k+1 \sim i-1]}_{min}+w[i] $$ k是区间长。 答案为 ${dp[n-k+1 \sim n}_{min}$ 。 传统方法对 ${ dp[i-k+1 阅读全文
摘要:
这个简单且好写 裸的带题面得hash懒得找,找了个板子 给定一个长n的字符串txt和一个长m的字符串str,问txt里能不能找到str; 考虑暴力,O(nm)逐个比对,如果要比对总共k个字符串就是O(nmk),会炸 考虑优化。 #include<bits/stdc++.h> #define MAXN 阅读全文
摘要:
引子 割点的定义:若从无向图中删除节点x以及所有与x关联的边之后,图将被分为两个或两个以上的不相连的部分,那么称作点x为图的一个割点。 可以形象化地理解为图的枢纽,没有这些枢纽,图就会解体。 本题中我们需要找到并输出这些割点。 如果硬要把无向图看成有向图,再硬把有向图看成加入了横叉返祖边的树,那么树 阅读全文
摘要:
和lca一样一直忘写了... 引子 仔细看题可以得知,如果将传递关系建有向图,那么要输出图中最小环的大小。我的理解中最裸的tarjan用于判环 int tim,top,tot; int dfn[MAXN],low[MAXN],flag[MAXN],stac[MAXN],scc[MAXN],cnt[M 阅读全文