08 2021 档案

摘要:感觉会分成好多篇,所以这篇的标题可能不叫网络流( 挖坑 基本模型,有向图,源点 S 汇点 T ,满足每条边的容量限制、除源汇点外的点入流等于出流 最大流 dinic 算法,算法原理什么的先放着(虽然也有用这个出题的),很多时候跑的很快,理论复杂度上界 O(n2m) ,二分图上是 \(O(n 阅读全文
posted @ 2021-08-21 21:35 zrkc 阅读(43) 评论(0) 推荐(0) 编辑
摘要:挖坑 贴代码 #include <cstdio> using namespace std; const int MAXN = 100005; const int sup = 0x3f3f3f3f; const int inf = -sup; struct splayTree { #define ch 阅读全文
posted @ 2021-08-19 18:26 zrkc 阅读(41) 评论(0) 推荐(0) 编辑
摘要:一些模型? #### 期望 dp f[s] 表示当前状态 s ,到达终态 T 所需的期望步数,那么有 f[s]=sp[ss]×(f[s]+1) s' 就是下一步可以到达的所有情况,有时是个方程 条件期望:E(期望得分) = P(可得 阅读全文
posted @ 2021-08-17 22:32 zrkc 阅读(53) 评论(0) 推荐(0) 编辑
摘要:轻重链剖分 将树剖分成若干个链的集合 我们定义,对于节点 u ,其所有子节点中子树最大的节点为其“重子节点”,其余子节点称为“轻子节点”;定义节点到其重子节点的边为“重边”,到其轻子节点的边为“轻边”;定义由重边相连的最大节点集合为“重链”,特别地,单个节点也算重链。 于是我们的树就被剖分成 log 阅读全文
posted @ 2021-08-16 17:17 zrkc 阅读(38) 评论(0) 推荐(0) 编辑
摘要:链接(原本那么长的题面描述呢?) 扫描线线段树的理解,点坐标与区间段的转化处理 首先考虑将“矩形覆盖点”转化成“点在矩形内”;考虑对于点 (x, y) ,会对矩形左下角位于 (x, y) 到 (x+W, y+H) 时产生贡献,于是就转化过来了 然后考虑烦人的“边框上不计算在内”怎么处理,显然由于给出 阅读全文
posted @ 2021-08-15 18:13 zrkc 阅读(42) 评论(0) 推荐(0) 编辑
摘要:写一种能方便我记忆的口胡 对于一个二分图,我们定义: 最大边独立集(感觉 最大匹配 这名字反倒容易混):最大的边集,满足对于其中任意两条边,都没有共同顶点 最小点覆盖:最小的点集,满足对于图中任意一条边,都存在一个顶点属于这个点集 最大点独立集:最大的点集,满足对于其中任意两个顶点,都没有连边 最小 阅读全文
posted @ 2021-08-13 11:16 zrkc 阅读(55) 评论(0) 推荐(0) 编辑
摘要:挖坑 割点,割边,点双连通,边双连通 圆方树 2-SAT 阅读全文
posted @ 2021-08-11 19:00 zrkc 阅读(25) 评论(0) 推荐(0) 编辑
摘要:挖坑,然后在这里种一棵主席树( 看了代码就很好理解了,对于单点操作只会使 logN 个节点产生变化,这样我们更新版本时,每次往下递归时都开一个新节点复制原来的信息就行了 查询的话从对应版本号的 rt[] 走 至于怎么用...嗯... 模板,静态查询区间第 K 小,权值线段树做差 原始版本的编号是 0 阅读全文
posted @ 2021-08-11 18:56 zrkc 阅读(33) 评论(0) 推荐(0) 编辑
摘要:我退役了当成兴趣就行 阅读全文
posted @ 2021-08-08 22:57 zrkc 阅读(76) 评论(0) 推荐(0) 编辑
摘要:awsl #include <cstdio> #include <algorithm> using namespace std; const int MAXN = 200005; int T, N, M, K, A[MAXN]; int main() { scanf("%d", &T); for ( 阅读全文
posted @ 2021-08-04 19:50 zrkc 阅读(24) 评论(0) 推荐(0) 编辑
摘要:参考博客 有 N 个物品,收益 ai ,代价 bi ,选择 M 个物品使得 aibi 最大 考虑二分答案 x ,将物品价值设为 aix×bi ,选前 M 大,看看总和是否大于 0 题目的话,比如取物品,最“小”生成树,s 阅读全文
posted @ 2021-08-04 09:56 zrkc 阅读(38) 评论(0) 推荐(0) 编辑
摘要:感觉给博客配图的速度可能要跟不上了( 折半搜索 原来的链接 一般的形式: void dfs(int l, int r, ll sum, int tp) { if (l > r) Q[tp][++tot[tp]] = sum; else { dfs(l+1, r, sum-A[l], tp); dfs 阅读全文
posted @ 2021-08-03 11:24 zrkc 阅读(37) 评论(0) 推荐(0) 编辑
摘要:动态数组 vector #include <vector> vector <int> v; // 定义一个int型的动态数组 v.push_back(x); // 在尾部插入一个int型的元素x v.pop_back(); // 删除尾部元素 v.size() // 返回v容器的大小 v.front 阅读全文
posted @ 2021-08-02 19:32 zrkc 阅读(41) 评论(0) 推荐(0) 编辑
摘要:参考博客 以三维前缀和为例,有(f 数组是前缀和) for (int i=1; i<=N; i++) for (int j=1; j<=N; j++) for (int k=1; k<=N; k++) f[i][j][k] = f[i-1][j][k] + f[i][j-1][k] + f[i][j 阅读全文
posted @ 2021-08-02 11:10 zrkc 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2021-08-02 09:31 zrkc 阅读(40) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示