算法
文章平均质量分 52
yanga11ang
an ACMer,team: Echo
展开
-
分块算法
感觉分块是一种很蛋疼的算法,但据说有的时候很好用 ( 分块算法可以维护一些线段树维护不了的东西,例如单调队列等,线段树能维护的东西必须能够进行信息合并,而分块则不需要 )。分块算法很多时候会把复杂度优化一个O( )。优化方式如下 一个规模为n 的问题, 我们将其变得有序, 令 x= 那么 我们可以将其划分为 块区域,分别为 [1 x] [x+1 2x] [2x+1 3x] ……[kx n原创 2017-07-17 14:36:27 · 2496 阅读 · 0 评论 -
Network of Schools POJ - 1236 tarjan强连通分量
tarjan强连通分量题意: N(2<N<100)各学校之间有单向的网络,每个学校得到一套软件后,可以通过单向网络向周边的学校传输,问题1:初始至少需要向多少个学校发放软件,使得网络内所有的学校最终都能得到软件。2,至少需要添加几条传输线路(边),使任意向一个学校发放软件后,经过若干次传送,网络内所有的学校最终都能得到软件。 思路 也就是: — 给定一个有向图,求: 1) 至原创 2017-10-15 16:16:57 · 260 阅读 · 0 评论 -
Frogs' Neighborhood POJ - 1659 havel定理
havel定理:判断度数序列是否可图(简单图)题意 未名湖附近共有N个大小湖泊L1, L2, …, Ln(其中包括未名湖),每个湖泊Li里住着一只青蛙Fi(1 ≤i ≤ N)。如果湖泊Li和Lj之间有水路相连(无向图),则青蛙Fi和Fj互称为邻居。现在已知每只青蛙的邻居数目x1,x2, …, xn,请你给出每两个湖泊之间的相连关系。 思路 直接贪心是有误的:1 2 3 2 0 用 havel原创 2017-10-15 17:41:59 · 247 阅读 · 0 评论 -
Command Network POJ - 3164 有向图的最小生成树(最小树形图朱刘算法)
有向图的最小生成树(最小树形图朱刘算法)题意 给你N个点的坐标和M条有向边,问你以点1为根的最小树形图的边权之和。思路 套用朱-刘算法 求解最小树形图即可 复杂度O(EV)设根结点为v0,(1)求最短弧集合E0 从所有以vi(i ≠ 0)为终点的弧中取一条最短的,若对于点i,没有入边,则不存在最小树形图,算法结束;如果能取,则得到由n个点和n-1条边组成的图G的一个子图G’,这个子图的权值一原创 2017-10-14 14:25:11 · 380 阅读 · 0 评论 -
单调栈、双端队列、单调队列
它们分别是栈和队列的变形,在某些时候会具有极大地价值。单调栈之所以被称作单调栈 是因为栈里面的元素是单调的。即,从栈顶到栈底是严格单调递增或递减的。 想要构成单调栈,对于入栈操作就需要作出一定的限制。 这里以单调递增栈为例进行说明:新增一个元素 需要将比他小的元素都出栈后才能加入。 例如 某次需要加入栈的元素依次为: 3 4 8 1 6 4 5 9 3进栈 (3) 3出栈 4进栈 (4)原创 2017-07-15 17:03:40 · 949 阅读 · 1 评论 -
三分查找
关于三分的一些理解一些需要知道的东西:定义: y = f(x) ; x 的取值 可以是离散的也可以是连续的 。y与x 在直角坐标系上的图像是单峰的,即只有一个最大值或最小值。三分查找的目的是: 给定区间 [L R] 求区间最值(凸的最大值 凹的最小值)在三分查找中用到的辅助变量有:l :三分查找的一个下界 ; r :三分查找的一个上界 ; mid : 上界和下界的中点 即 (l+r)/原创 2017-07-15 12:30:16 · 341 阅读 · 0 评论 -
四边形不等式优化dp
关于四边形不等式优化dp的一点理解 我其实应该先学好几何证明 orz 前导算法 区间dp 基础几何证明算法干嘛 当区间dp 代价函数满足fun(i,j)+fun(i',j')<fun(i',j)+fun(i,j')时 通过减少 类区间dp 的决策区间,将其O(n^3) 的复杂度化为O(n^2)算法思路 区间合并时候,如果代价函数满足fun(i,j)+fun(i',j')<fun(i',j)原创 2017-07-23 11:15:43 · 372 阅读 · 0 评论 -
(初识)斜率dp
关于斜率dp的一点理解 我其实应该先学好几何 orz 前导算法 基础dp 单调队列 数形结合思想算法干嘛 是动态规划问题中的一种优化方案, 当满足 时可以利用斜率优化,变化O(n)为O(1)算法思路 本算法是一种数形结合的优化方法, 可以考虑为 随着i增加 i的待考查区间增大。 如果满足上述斜率等式 , 易发现,待考察区间有许多无用值 将之去掉,待考察区间 可能变为斜率递增的单调原创 2017-07-21 19:58:16 · 246 阅读 · 0 评论 -
Minimum Cut POJ - 2914 无向图最小割,stoer_wagner算法
无向图最小割,stoer_wagner算法题意: 给一副无向图,求一组最小割集,将图分成两份 题解 某算法刚好可解决 stoer_wagner算法 算法流程: 1.min=MAXINT,固定一个顶点P 2.从点P用类似prim的算法扩展出“最大生成树”,记录最后扩展的顶点和最后扩展的边 3.计算最后扩展到的顶点的切割值(即与此顶点相连的所有边权和),若比min小更新min 4.合原创 2017-10-17 17:55:08 · 276 阅读 · 0 评论 -
区间dp
关于区间dp的理解一直不知道这玩意,研究了一下才发现学长原先讲过(跑 )前导算法 dp算法干嘛: 这种算法可以解决一类问题,这类问题,大区间的最优解,可以由构成它的小区间的最优解组合生成。算法思路: 既然大区间的答案,可以由小区间,组合生成, 那我们就像搭积木一样从小区间,一直求到大区间。 区间越小数目越多,我们需要一一求解所有的区间,因为,每一个区间都有可能是更大区间的基石。 区间合并原创 2017-07-18 20:52:39 · 313 阅读 · 0 评论 -
状态压缩dp
关于状态压缩dp的一点理解练几道题就明白前导算法 最少掌握二维的dp 进制转换 数论基础算法干嘛 可以求解方案数啊,减少维数,本质还是dp求解算法思路 若果一道dp题,发现确定状态的参数很多,并且他们在某种意义下,是相近的。 这时,可以将其编号,然后用进制的方式压缩到成一个参数,进而减少dp的维数。比如原先空间是dp[100][2][2][2][2][2] 可以变成dp[100][1<原创 2017-07-19 16:49:15 · 417 阅读 · 0 评论 -
插头dp
关于插头dp的一点理解如果是自学的话,有福了,我懵逼了好几天 但可以看看这个PPT 在看看代码应该可以加深理解。练习题一,我写了一点注释,希望有帮助前导算法 状态压缩dp 位运算算法干嘛 求哈密顿回路 条数算法思路 定义了两个东西 (PPT中图文相结合)1.插头:一个格子某个方向的插头存在表示这个格子在这个方向与相邻格子相连.2.轮廓线:已决策格子和未决策格子的分界线我们用状态压缩的原创 2017-07-20 16:31:21 · 355 阅读 · 0 评论 -
Popular Cows POJ - 2186 找金字塔顶点?
有向图中所有点都能到达的点题意 题目大概是有好多牛,牛(们)之间具有某种关系(鬼知道),这种关系具有传递性,如果有 A欢迎B和B欢迎C,那么就有A欢迎C。我们要找到能让其他所有的牛都欢迎的牛。 思路 画图易知 如果强联通分量中有多个缩点,出度为零,要么不成联通,要么联通也不能被所有牛崇拜,故而本题求的是唯一的一个出度为零的连通分量的规模 Ps:对于入度没有要求(画蛇添足必须死) 代码/*原创 2017-10-15 19:18:31 · 221 阅读 · 0 评论