随笔分类 - ACM专题
摘要:现在还不是很懂cdq分治是啥。 我对它的理解大概就是一种分治方法 / 思想。 这个方法有一些限制:[区间L] < [区间R](需要对整个数组sort一遍) 这个方法可以做到:用来解决各种区间段转移问题[x->y(x<y)]的,比如,求逆序对数。(本质上就是计算左区间对右区间的贡献) 拓展:将修改转化
阅读全文
摘要:先看一手B站的闫氏DP法:传送门。 关于DP其实我很早就想学了,但是现在才是下定决心开始好好学。 先从最简单的背包开始。
阅读全文
摘要:一、无源汇可行流 1、建图:将有上下界的网络流图转化成普通的网络流图 首先建立附加源点ss和附加汇点tt 对于原图中的边x->y,若限制为[b,c],那么连边x->y,流量为c-b 对于原图中的某点i,记d(i)为流入这点的所有边的下界和减去流出这点的所有边的下界和 若d(i)>0,那么连边ss->
阅读全文
摘要:其实分块也没学多少。 谈谈一开始对这个算法的理解吧。 分块算法主要是对应区间操作与区间 / 单点查询。所谓分块就是将 有 n 个元素的数组分成 n / m 块, 一般 m 取 sqrt(n)。 一般操作的区间会被划分成三块, [L, L所在块的右界] (不完整的块), 很多个被划分的块(完整的块),
阅读全文
摘要:判断无向图是否有环: 无向图中当顶点的数量和边的数量很大的时候,使用dfs存在大量的递归,会导致栈溢出。使用下面的方法可以有效的避免。 判断无向图中是否存在回路(环)的算法描述 如果存在回路,则必存在一个子图,是一个环路。环路中所有顶点的度>=2。 算法: 第一步:删除所有度<=1的顶点及相关的边,
阅读全文
摘要:前置技能:01分数规划, 最大权闭合子图 图片源自网上:https://blog.csdn.net/corsica6/article/details/88200297 说说我自己对这个“最大密度子图”的理解吧。 关于算法一: 1. 为什么是求h(g) = E - gV(这里的E代表的是∑E,V同理)
阅读全文
摘要:https://blog.csdn.net/hzoi_ztx/article/details/54898323 01分数规划问题主要包含以下几个问题: 一般的01分数规划 最优比率生成树 最优比率环 关于二分判断条件的理解。 给出几道例题:一、POJ-2976 入门 #include <cstdio
阅读全文
摘要:之前虽然刷了大概一百道网络流的题目,但是始终是把网络流当作黑盒算法来学。我大概知道了网络流能做什么。 但是对于网络流的代码细节我还是一窍不通。特此写一篇博文来整理,我对网络流的理解。 Ford-Fulkerson算法: 这个算法是一切网络流算法的基础,其最重要的贡献就是增广路定理:找不到增广路的时候
阅读全文
摘要:网络流从入门到入土 #2 这份题单UVA的题目偏多。但是洛谷不知道为啥UVA交不上去。所以一般我都是去VJ上刷题。 较为简单的最大流模板题: The Grand Dinner 这道题就是上一份题单里的圆桌问题。改改输出就好了。 #pragma GCC optimize(2) #include <bi
阅读全文
摘要:最小字典序的2-SAT (以下文字嫖自网上) 【O(NM)算法:求字典序最小的解】 根据2-SAT建成的图中边的定义可以发现,若图中i到j有路径,则若i选,则j也要选;或者说,若j不选,则i也不能选; 因此得到一个很直观的算法: (1)给每个点设置一个状态V,V=0表示未确定,V=1表示确定选取,V
阅读全文
摘要:放一篇写的很好的博客:http://www.cppblog.com/menjitianya/archive/2015/11/19/212292.html 个人感觉我差分约束还是不是很熟。 先总结一下遇见的差分约束题目类型: 1. 给定m条约束关系,求可行解 这种题目是需要建一个超级源点,向每个点连一
阅读全文
摘要:存个最最基础的路径压缩板子: int _find(int x){return fa[x]==x?x:fa[x]=_find(fa[x]);} void _merge(int x, int y){fa[_find(x)]=_find(y);} View Code 放几道裸题吧。 A - Wireles
阅读全文
摘要:这里可能需要说一下SCC是在有向图里的,BCC是在无向图里的,割边割点倒是都可以 Tajan求强连通分量(Strong Connected Component, SCC) 给个比较好的视频链接吧:https://www.youtube.com/watch?v=wUgWX0nc4NY&feature=
阅读全文
摘要:最小生成树 稀疏图用prim+heap,稠密图用kruscal,一般给的是稀疏图 prim+heap模板: #include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <map> #includ
阅读全文
摘要:表达式树生成代码(源自紫书): #pragma GCC optimize(2) #include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 1e5 + 100; const int maxm
阅读全文
摘要:网络流入门到入土(#1) 最大流: 裸最大流: P1343 地震逃生 #pragma GCC optimize(2) #include <bits/stdc++.h> using namespace std; const int maxn = 1e5 + 10; //const int maxm =
阅读全文