自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(126)
  • 收藏
  • 关注

原创 c++常用自带函数用法与注意

自定义类型要有可移动/可拷贝,STL 容器 O(1) swap。自动按 first 再 second 字典序比较,排序神器。状态压缩 DP、BFS 判重、Floyd 传递闭包。比 vector 慢,随机访问略慢,内存不连续。只有 0 和 -1 是安全的(按字节),其他用。返回删除个数,set 是 O(log n);滑动窗口队头队尾操作、单调队列常用。频繁用会拷贝,大数据量用。,除非 n 很大且不怕被卡。不检查,debug 用。包裹,否则捕获不到自己。,同步关了会 RE/读错。,模板比 STL 的。

2026-08-19 19:45:33 258

原创 【板子】去均值随机哈希分组维护

组号 group类号 typen,q2e6。

2026-08-18 15:37:23 165

原创 【板子】快读plus

中间有没有空格、有没有多余空行、Windows。读矩阵,多一个换行就错位;

2026-08-13 17:49:02 39

原创 【连通判定】传送门

接下来 kk 行,每行输入四个整数 x1,y1,x2,y2x1​,y1​,x2​,y2​,表示一个从 (x1,y1)(x1​,y1​) 指向 (x2,y2)(x2​,y2​) 的传送门。接下来 qq 行,每行输入四个整数 x1,y1,x2,y2x1​,y1​,x2​,y2​,表示询问能否从 (x1,y1)(x1​,y1​) 到达 (x2,y2)(x2​,y2​)。第一行输入四个整数 n,m,k,qn,m,k,q,分别表示网格行数、列数、传送门数量和询问数量。当然,对于本题,有卡常,需要用快读快写优化。

2026-08-13 17:35:30 178

原创 【2-sat】蕴含式转化2-sat

对于第 i 次操作(边 (xi​,yi​)):设布尔变量 vi​ 表示选择:vi​=true 选 yi​,false 选 xi​。代码实现:用id(i,0)表示选 xi​,id(i,1) 表示选 yi​;op(k)取反。u 在最后一次涉及它的操作中被加 1,且此后不再被修改。d[u]:度数(出现次数)lst[u]:最后一条与 u 相连的边的编号pre[u]:倒数第二条与 u 相连的边的编号。

2026-08-06 22:03:38 321

原创 【板子】权值线段树

权值线段树 = 以"数值"为下标建立的线段树,每个节点维护"落在这个值区间内的元素的某种聚合信息"。普通线段树的下标是"第几个位置",权值线段树的下标是"数值本身"。线段树需要支持单点修改,但是不能插入新点,权值线段树可以把不变的值开成点,把变化的点数开成值,本质上是线段树,把值作为下标,把点数作为原值,把插入点变成单点修改。对比项普通线段树权值线段树下标含义数组位置i元素的值x叶子节点a[i]的值值为x的元素个数(或其他信息)节点含义区间[l,r]的聚合(和/最值)值在[l,r]

2026-07-29 22:30:26 342

原创 【板子】短序列dp(换成维护更小常数维度的dp)

步骤做什么为什么① 发现长度上界​证明/观察到答案枚举长度 ≤ O(logV)可以逐长度枚举,不会 TLE② 定义 DP 状态​fi,j​ = 以 i 结尾、长度为 j 的某种极值(通常是最小起点 / 最大终点)把"选子序列"转化为递推③ 值域限制 → 区间查询​转移条件形如 L≤ak​≤R,转化为在离散化权值上的区间查询线段树/树状数组直接上④ 控制下标顺序​正序/倒序枚举 i,保证查到的都是"前面/后面"的状态不用再管下标维,线段树只管权值⑤ 离线/半在线回答询问​。

2026-07-29 22:00:40 173

原创 【板子】费用流

操作说明g.init()初始化(多组数据时必调)添加一条从u到v、容量为w、单位费用为c的有向边从源点s到汇点t跑最小费用最大流,返回{最大流, 最小费用}

2026-07-28 17:29:17 194

原创 【板子】LCA 树链剖分

树链剖分的核心思想是将一棵树切分成若干条链,使得在查找路径时效率最高。重儿子 (Heavy Son):对于节点 u,它的所有子节点中,子树节点数量最多的那个儿子。轻儿子 (Light Son):除了重儿子以外的所有儿子。重边 (Heavy Edge):连接节点 u 和它的重儿子的边。轻边 (Light Edge):连接节点 u 和它的轻儿子的边。重链 (Heavy Chain):由多条重边连接而成的路径。性质:任意一条树上的路径,最多只会被切成 logn 条链。这就是为什么它速度快的原因。

2026-07-27 21:54:24 213

原创 【板子】LCA Tarjan

这是一份基于 Tarjan(塔扬)算法的最近公共祖先(LCA)模板及详细讲解。该算法利用和的思想,是目前求解 LCA 问题最高效的算法之一(时间复杂度 O(N+Q),其中 N 为节点数,Q 为询问数)。

2026-07-27 21:11:08 245

原创 【引理】Raney

本质是对「循环移位等价类」计数,每个等价类的大小恰好是2n+1,因此用全集大小除以类大小得到等价类数量,而等价类数量正好等于卡特兰数Cn​。构造全集U:对任意n,构造所有长度为m=2n+1、由n个−1和n+1个+1组成的序列,构成全集U。全集大小为组合数:∣U∣=(2n+1)!/n!⋅(n+1)!​定义等价关系:如果两个序列可以通过循环移位互相得到,就属于同一个「循环移位等价类」。例如[+1,+1,−1]、[+1,−1,+1]、[−1,+1,+1]属于同一个等价类。Raney引理的核心作用。

2026-07-25 21:46:39 462

原创 【板子】二分答案(最大最小?)

读题,找关键词“最小的最大”、“最大的最小”确认答案具有单调性若答案变大,可行性只会变差或不变确定二分区间 [l, r]写出 check(mid)贪心 / 模拟 / DP套用对应模板调试边界(整数二分最容易错)

2026-07-25 18:00:56 254

原创 优先队列贪心dp

有若干根绳子(或一根总绳)最多切​ 刀,得到若干段每次切割的收益 = 切割前段价值 - 切割后两段价值之和(收益 > 0 才值得切)

2026-07-25 18:00:20 176

原创 【板子】矩阵快速幂DP(有限状态转移?)

是“过一天”?“到下一列”?“变下一行”?“一步移动”?当前这一步,我需要知道哪些信息才能决定下一步?定义状态 s 为一个 (n−2) 位的二进制数:10:ci!=c i−2​状态总数:S=2n−2(当 n≥2)。优势:当 n=9 时,状态数从 768 降至 128。

2026-07-24 22:27:29 174

原创 【板子】优先队列

判断使用场景需要动态获取最大/最小值Top-K问题贪心算法中需要按优先级处理带权重的调度问题堆类型选择求前K大 → 小顶堆求前K小 → 大顶堆Dijkstra算法 → 小顶堆哈夫曼编码 → 小顶堆自定义比较器要点// 对于结构体,重载 < 运算符int x, y;// 注意:返回true表示this的优先级低于other// 大顶堆:希望x大的在前,则 return x < other.x;// 小顶堆:希望x小的在前,则 return x > other.x;// 大顶堆按x降序。

2026-07-24 01:46:37 209

原创 【板子】拓扑序计数(少量先后约束,合法排列数)

题目通过逆序对约束建立了一个有向无环图(DAG),要求计算这个 DAG 所有可能的拓扑序数量。这是图论中一个非常经典的问题。给定一个有向无环图(DAG),包含 n 个节点和 m 条有向边。求从节点 1 到节点 n 的所有拓扑序数量(即满足所有边约束的全排列数量)。答案对 998244353 取模。第一行:n, m接下来 m 行:每行 u, v 表示一条从 u 到 v 的有向边一个整数,表示拓扑序数量。

2026-07-22 22:24:46 245

原创 【板子】线性基

在线性代数中:三维空间中,任意向量都可以用线性组合表示这三个向量线性无关,构成了一组基给定数组a[1...n],其线性基是一个集合B可表示性a中任意多个数的异或和,都能由B中若干数异或得到极小性B中任意元素都不能被其他元素异或表示(线性无关)唯一性:经过标准化后,线性基的形式是唯一的坑点说明忘记处理 0zero标志位很重要位数不够根据题目范围调整 MAXL未重构就查第 k 小必须先 rebuild合并顺序一般从高位到低位插入long long 溢出移位时注意符号。

2026-07-22 21:29:30 442

原创 树上合并-搭积木

小 W 正在用积木搭建一个巨大的结构。有 nn 块积木,编号为 11 到 nn。第 ii 块积木有两个整数属性 aiai​ 和 bibi​。一开始,小 W 打算一块一块地搭建。对每块积木 ii,给定一个积木 fifi​,表示积木 ii 必须直接放在积木 fifi​ 的上方。如果 fi=0fi​=0,则积木 ii 位于整个结构的最底部。题目保证这些要求是自洽的,并且最终会形成一个包含所有积木的完整结构。后来,小 W 觉得逐块搭建太无聊了。

2026-07-21 22:08:22 317

原创 【板子】欧拉路径/回路

欧拉路径(Eulerian Path):一条路径,经过图中每条边恰好一次欧拉回路(Eulerian Circuit):一条起点 = 终点的欧拉路径注意:欧拉路径关心的是边,不是点。每个点可以经过多次,但每条边只能走一次。与之对应的是哈密顿路径——经过每个点恰好一次。

2026-07-20 22:05:57 277

原创 马尔可夫【MDP】

dp[i][zt]还剩下i轮游戏,当前状态为zt时,Alice 能获得的期望总得分。给定一个过程,如果下一时刻的状态只取决于当前状态,跟更早的历史无关,这个过程就满足马尔可夫性。形式化写:回到这题:当前状态 = (Alice手牌, Bob手牌)下一轮手牌只由"当前手牌 + 这轮谁出啥 + 随机补牌"决定前 5 轮是怎么打到这个状态的,完全不影响下一轮所以这是个马尔可夫过程。状态只有 100 个,就叫有限状态马尔可夫链。

2026-07-18 22:06:43 355

原创 【板子】德州扑克模拟

暗牌变成除桌面上已经出现的八张明牌之外的任意一张牌。法国赌神变牌之后,你完全知晓他的选择,然后你可以把自己的暗牌变成除桌面上已经出现的八张明牌以及法国赌神变牌后的暗牌之外的。每种花色都包含 A、K、Q、J,以及从 2 到 10 的数字牌;标准扑克牌包含四种花色,每种花色各有 13 个点数:梅花(♣)、方块(♢)、红桃。也就是说,除去已知的九张不同牌,总共有 43 张牌可选。在梭哈游戏中,每位玩家最终手里有五张牌,并且所有玩家的牌都互不相同。由于法国赌神拥有超强的特异功能,他可以先把自己的。

2026-07-17 19:07:47 173

原创 【板子】Dinic(最大网络流)

流了 5 单位,以后你可能想退回去一点。会被反复调用,直到当前分层图被“堵死”。反向边容量为 0(一开始没流)点编号从 1 开始也要保证。到了终点,直接返回能送的水量。是引用,修改它会直接保存进度。下次再来 u,不会从头扫边。因为每条边要建一条反向边。能送的水 = 当前限制。,会反复调用,直到送不动。📌 每一轮 BFS 后,:表示这个点还没访问到。完成一次增广,立刻返回。防止 BFS 误拷贝。cap = 剩余容量。

2026-07-15 21:11:47 181

原创 【板子】tarjan,2-sat,缩点DAG

在有向图中:如果从点u能走到v,且从v也能走回u,就说u和v强连通。强连通分量就是一个极大的子图,里面任意两点都强连通。1 → 2 ↘↑ ↓ 3↖---4 ↙在这个图中,{1,2,4}是一个 SCC,因为它们可以互相到达。对每一种材料i满式:记作x_i = true汉式:记作于是我们有n个布尔变量x₁ ~ xₙ。

2026-07-14 20:49:17 220

原创 【板子】二分图最大匹配(增广路)

在图论中,匹配指的是一组边的集合,满足集合中任意两条边都没有公共的顶点。放在二分图的语境下:二分图分为左部和右部,所有边都横跨左右两部分。如果选了一些边,且这些边没有共享的左部点或右部点,那么这些边就构成一个匹配。最大匹配就是所有可能的匹配中包含边数最多的一个。特别地,如果某个匹配已经让某一部分的所有点都被“占用”(即每个点都关联了一条匹配边),则称为完备匹配(但本题只求最大匹配的边数)。从未匹配的左部点出发;非匹配边 → 匹配边 → 非匹配边 → …;最终到达一个未匹配的右部点。

2026-07-14 15:16:32 218

原创 【板子】拓扑排序(少量先后约束,进行合法排列/执行)

解决​ 的问题。把​ 拉直成一个序列。保证:如果A -> B(A 依赖 B),序列中(注:取决于建图逻辑,通常我们定义a->b为a做完才能做b,即a在前;但在“菜肴制作”题中,为了“小数靠前”,我们采用了反向建图,此时y->x意味着x依赖yy在前)。

2026-07-13 21:27:44 185

原创 【板子】BF,SPFA,Dijkstra等(最短路问题)

这是最短路算法的基石。假设我们要从 A 到 B。目前我们知道走某条路需要 10 元。突然发现一条新路:先从 A 到 C(花费 4 元),再从 C 到 B(花费 3 元),总共只要 7 元。那我们就。

2026-07-13 17:56:31 199

原创 【板子】欧拉序

dfs 序:1 → 2 → 回溯 → 3 → 回溯 \(in[1]=1,\ out[1]=3\) \(in[2]=2,\ out[2]=2\) \(in[3]=3,\ out[3]=3\) 子树 1 对应区间 \([1,3]\),子树 2 对应 \([2,2]\)。

2026-07-11 22:06:59 223

原创 【板子】LCA+ST

大数据必加,关闭 cin 与 stdio 同步,大幅提速;(endl 会强制刷新缓冲区,很慢)。

2026-07-11 21:31:26 217

原创 【板子】树上启发式合并

我们可以先预处理出每个节点子树的大小和它的重儿子,重儿子同树链剖分一样,是拥有节点最多子树的儿子,这个过程显然可以 𝑂(𝑛)这样,原本全部遍历两遍,现在轻2遍,重只需要1遍,多层缩减下,整体遍历数量接近Onlogn。可以发现,每个节点的答案由其子树和其本身得到。为根的子树里一共出现了多少种不同的颜色.。支持离线,考虑预处理后 𝑂(1),现在对于每个结点 𝑢。的出现次数,𝑎𝑛𝑠𝑢。

2026-07-11 20:57:29 276

原创 【板子】求树的重心

对一棵无根树,删除节点 u后会得到若干连通块,设最大连通块点数为 f(u)。使 f(u)最小的节点称为树的重心(质心)。等价定义:以 u为根时,所有子树(含“向上”那棵)的点数最大值最小。

2026-07-11 16:19:23 201

原创 【板子】ST表

(stmax[i][j][k][l]\):左上角\((i,j)\),高\(2^k\)、宽\(2^l\)的矩形最大值 \(stmin[i][j][k][l]\):同上,存最小值。

2026-07-10 19:47:58 239

原创 【板子】动态规划

一共有 N 件物品,编号 \(1,2,\dots,N\)。对于每件物品 i(\(1\le i\le N\)):重量为 \(w_i\),价值为 \(v_i\)。太郎打算从中挑选若干物品装进背包带走。背包的容量为 W,即所选物品的总重量不能超过 W。请求出太郎能带走的物品。

2026-07-08 21:22:40 213

原创 【板子】线段树

【代码】【板子】线段树。

2026-07-07 16:12:49 197

原创 【板子】AC 自动机

多模式串匹配问题:给定一堆模式串,一个长文本,一次性找出文本里所有出现过的模式串。暴力:每个模式串单独 KMP,总复杂度爆炸。AC 自动机 =,线性处理。

2026-07-06 21:09:21 323

原创 【板子】kmp

真前缀:不包含最后一位;真后缀:不包含第一位;\(next[i]\) = 最长的长度 k,满足前 k 位 = 后 k 位(\(k<i\)),这个长度叫Border。例:\(P=abcab\)(长度 5) 前缀:a ab abc abca abcab 后缀:b ab cab bcab abcab 最长相等真前后缀是ab,长度 2 → \(next[5]=2\)。

2026-07-06 20:55:43 363

原创 【板子】树状数组

则 \(mark[i]=1\);否则 \(mark[i]=0\)。那么区间 \([l,r]\) 内所有 mark 的和 = 区间内不同颜色总数。原理:同一种颜色只会在最靠右的位置贡献 1,其余位置都是 0,每种颜色恰好贡献 1 次。//右侧最后,对应配套时离线按查询的右侧从小到大排序。

2026-07-04 15:37:07 305

原创 【板子】最短路

适用:n≤1e5,稀疏图,无负权。

2026-07-03 19:44:26 204

原创 【并查集】判环,深搜

给定连通无向无权图,n 个点 m 条边,满足 (n-1 < m < n+2)。

2026-07-03 19:33:35 170

原创 【并查集】判环

R:全部车辆集合,每个元素是一对数字 (x,y) cnt:满足 x≠y 的车辆总数量,每一台基础消耗 1 次移动G:仅由 x≠y 的车辆构建的无向图 S:图 G 里任意一个连通块 |S|:连通块 S 包含的数字点总数 E (S):连通块 S 内部包含的车辆(边)总数判断一个连通块是环的条件 E (S) > 0 并且 |S| == E (S)loop:图 G 中所有满足上面条件的环连通块总个数最终答案计算式 ans = cnt + loop。

2026-07-03 12:05:22 258

原创 【板子】最小生成树MST

复杂度:(O(mlog m))

2026-07-02 22:05:37 359

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除