- 博客(7)
- 收藏
- 关注
原创 组合数学基础
设$f(k)$表示恰好满足$i$个条件的方案数,$g(k)$表示钦定$k$个条件满足的方案数(有人也称之为至少,但这并不是至少满足$i$个条件的方案数),则$ f(k) = \sum_{i=k}^n \binom{i}{k} g(k)$,反演得到$g(k) = \sum_{i=k}^n (-1)^{i-k} \binom{i}{k} f(k)$。让$f$只用$< B$的数,让$g$只用$\ge B$的数($g[i][j]=g[i-B][j-1]+g[i-j][j]$),再胡乱一组合即可。
2025-07-31 21:10:53
317
原创 Tarjan全家桶----强连通分量
先对每个点求一个$dfn$,也就是$dfs$序,然后定义$low$数组为$u$点能到达的最小$dfs$序,而且这个$dfs$序也要能到达$u$。每次遍历边$(u,v)$,用$v$的$low$值更新$u$的$low$值,然后看$low_u==dfn_u$是否成立。我们求的$low$点,应该要满足能走回$u$点才对,但可能会有遍历了横叉边,走到了走不回$u$点的点,错误地计算了$low$,影响了强联通分量的计算。所以我们要引入一个在栈数组$instack$,$low_u$只能用在栈点$v$的$low$更新。
2025-07-31 21:08:13
245
原创 单调队列优化dp小结
拿手拆一拆易得:f[i][j]=c[i]*j+min(f[i-1][k]+(x[i]-x[i-1])*k*k-c[i]*k)(max(0,j-c[i])<=k<=j)这题和单调队列毫无关系,设f[i][j]表示后两步为i,j的最大值,转移枚举j,再枚举k,用minn=max(f[i][j])转移一下即可,可以用上一个k的延续过来。拿脚推易得:f[i][j]=min(f[i-1][k]+(x[i]-x[i-1])*k*k+c[i]*(j-k))(max(0,j-c[i])<=k<=j)
2025-05-01 18:15:21
1089
原创 图论大杂烩
可以按边权从小到大排序,每次新建一个点,点权设为边权,并向两端点所在树的根分别连边。每次查询先找到x的祖先中最浅的点权<=w的祖先,求一个子树query即可。在对一个点进行修改操作时,如果这个点没有再修改的必要,就可以将father连接到下一个点,这样总复杂度就为O(n)要求从一个点x出发,通过长小于等于w的边走到的所有点中,点权最小的点。这可以使用Kruskal重构树解决。Kruskal可以在O(mlogm)的时间复杂度内求出最小生成树,在此不过多赘述。并查集可以快速判断两个点是否联通,在此不过多赘述。
2025-04-15 17:23:07
264
原创 2-SAT问题
狭义2-SAT问题:给定m个条件,形如f(x)___f(y)=b,其中f(x),f(y),b属于0-1,____是一种位运算,问能否给f(1)-f(n)赋值使得所有条件满足。因为f(x)=a->f(y)=b这个条件在状态数>=3时不满足SAT性,f(y)!但是我们在P4782里要判断的是是否无解,只有在f(x)==a->f(x)==!a的节点向f(y)==b的节点连一条有向边,表示f(x)==!题解:对每个节点的每个状态建一个节点,然后处理条件f(x)==a or f(y)==b。同理,把f(y)==!
2025-04-15 17:14:17
696
原创 左偏树与可并堆
全局加可以用wholetag,联通块加可以打标记,单点加就要删掉再插入(我用了别的方法,太笨,不说了),连边就需要用类似启发式合并的方法,把小size联通块的tag暴力改为大size联通块的tag,复杂度O(nlogn)。单点查询就是a(x)+tag(root(x))+wholetag,联通块最大值查询就是a(root(x))+tag(root(x))+wholetag。n个点的左偏树,根的距离最大为log(n+1)-1。2.P1552 有点像线段树合并,每次合并到父亲节点上,然后不断弹出最大值就可以了。
2025-04-14 16:48:33
753
原创 数位dp的练习
P4124 模版,看着像纸老虎,实则只要开一个六维数组,分别记录:位数、最长连续长度、末尾连续长度、末尾值、4是否出现、8是否出现,胡乱转移一下就好了。所以我们分别f,g,h,d,分别表示00,01,10,11(第一位表示i是否卡上界,第二位表示j是否卡上界),然后胡乱转移一下就好了。P6218 模版,只不过要加一个维度,记录0和1的差,胡乱转移一下就好了。P2657 模版,只不过要加一个维度,记录末尾的值,胡乱转移一下就好了。数位dp是最简单的一种dp,也是能和其他dp结合的一种dp。
2025-03-25 17:57:44
157
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅