文章分类 - 模板
摘要:二维前缀和与二维差分 二维前缀和:快速求一个子矩形的元素和。 二维差分:快速给一个子矩形整体加上一个数。 前缀和与差分互为逆运算 二维前缀和 如何计算二维前缀和 我们设\(s[i][j]\) \(=\) 从 \((1,1)\) 到 \((i,j)\) 这个矩形的元素总和 也就是下面这一部分的阴影面积
阅读全文
摘要:(模板)线段树 单点修改 + 区间查询(无\(tag\)) 神奇的代码 #define int long long using i64 = long long; const int maxn = 5e5 + 5; int nums[maxn]; int tree[4 * maxn]; void up
阅读全文
摘要:(模板)树状数组 单点修改 + 区间查询 神奇的代码 #define int long long #define lowbit(x) x & -x const int maxn = 5e5 + 5; int fenwick[maxn]; int n = 0; // 数据个数 int query(in
阅读全文
摘要:(模板)最小生成树(Kruskal) 题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出 orz。 输入格式 第一行包含两个整数 \(N,M\),表示该图共有 \(N\) 个结点和 \(M\) 条无向边。 接下来 \(M\) 行每行包含三个整数 \(X_i,Y_i,Z_i\),表
阅读全文
摘要:(模板)最小生成树(Prim) 题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出 orz。 输入格式 第一行包含两个整数 \(N,M\),表示该图共有 \(N\) 个结点和 \(M\) 条无向边。 接下来 \(M\) 行每行包含三个整数 \(X_i,Y_i,Z_i\),表示有一
阅读全文
摘要:三分 题目背景 本题可能存在严重精度问题,部分数据下难以通过。本题数据较水,仅供参考。 题目描述 如题,给出一个 \(N\) 次函数,保证在范围 \([l, r]\) 内存在一点 \(x\),使得 \([l, x]\) 上单调增,\([x, r]\) 上单调减。试求出 \(x\) 的值。 输入格式
阅读全文
摘要:【模板】ST 表 && RMQ 问题 题目描述 给定一个长度为 \(N\) 的数列,和 $ M $ 次询问,求出每一次询问的区间内数字的最大值。 输入格式 第一行包含两个整数 \(N,M\),分别表示数列的长度和询问的个数。 第二行包含 \(N\) 个整数(记为 \(a_i\)),依次表示数列的第
阅读全文
摘要:点双连通分量(Tarjan) 题目概述 对于一个 \(n\) 个节点 \(m\) 条无向边的图,请输出其点双连通分量的个数,并且输出每个点双连通分量。 算法主要步骤 维护一个栈 第一次访问某一个点时,将其入栈 当割点判断的法则成立时,即\(low[son] >= dfn[fa]\)时,不断从栈中弹出
阅读全文
摘要:割点(Tarjan) 题意概述 给出一个 \(n\) 个点,\(m\) 条边的无向图,求图的割点。 思路 \(dfn[i]\):\(i\)是第几个被访问到的 \(low[i]\): \(i\)点通过一条返祖边能回到的$dfn值最小的点是哪一个 对于点\(i\), 它的所有儿子中不存在能通过返祖边或者
阅读全文
摘要:割边(Tarjan) 题意概述 一个图,\(n\)个点,\(m\)条边,求这个图的割边 思路 \(dfn[i]\): \(i\)点是第几个访问的 \(low[i]\): 从\(i\)点出发经过任意条树边,最多一条返祖边,最多一条横插边能回到\(dfn\)值最小的那个点 对于\((u, v) u是父亲
阅读全文
摘要:强连通分量(Tarjan) 个人认为:求强连通分量的过程就是缩点的过程 算法主要步骤 \(dfn(n)\)时间戳 \(low(n)\)点\(n\)和它子树中的返祖边和横插边能连到还没有出栈的\(dfn\)的最小的点 在\(dfs\)的时候维护一个栈,第一次访问某一个节点时就把这个点加入到栈中,当一个
阅读全文
摘要:(模板)匈牙利算法 匈牙利算法就是不断找增广路的过程 假期的宿舍 题目概述 每个人只能睡自己的床或者自己直接认识人的床 学校自己的学生一部分回家,一部分留校 一部分外校人来找朋友 能否每个人都有床睡觉 输入格式 第一行一个数 \(T\) 表示数据组数。接下来 \(T\) 组数据,每组数据第一行一个数
阅读全文
摘要:(模板)KM算法——带权二分图的最佳匹配 升级版匈牙利算法 题意概述 有n个人,n个房子,每个人到房子都有一定的距离,问怎么匹配总距离最小 思路 可以看成是一个二分图,人在左集合,房子在右集合 这就是一个带权二分图的最优匹配问题 但是让求的是最小匹配怎么办呢,可以把权值存成负数,输出的时候再加一个负
阅读全文
摘要:【模板】单调栈 题目描述 给出项数为 \(n\) 的整数数列 \(a_{1 \dots n}\)。 定义函数 \(f(i)\) 代表数列中第 \(i\) 个元素之后第一个大于 \(a_i\) 的元素的下标,即 \(f(i)=\min_{i<j\leq n, a_j > a_i} \{j\}\)。若不
阅读全文

浙公网安备 33010602011771号