- 博客(11)
- 收藏
- 关注
原创 折半枚举0.5
折半枚举0.5Table of Contents折半枚举常见类型具体题目POJ2785POJ3977NOIP2014模拟赛-某种密码(password)常见类型超大01背包(从一个集合中选取某个子集,使其中所有元素值之和等于某个给定值).具体题目POJ2785#include <cstdio>#include <iostrea...
2018-11-08 08:27:14 254
原创 KMP0.1
KMP0.1目录KMP 基本介绍kmp利用next数组记录在比较字符串时遇见的最长前缀及最长后缀相同的长度,从而实现不回溯且大幅移动字符串,时间复杂度为O(n+m).可以看出,kmp的核心就是next数组的构建.具体过程见此,里面有kmp原理详尽介绍,这里就不赘述.其实对于这种概念性的东西,要充分利用优势:手推和刷题来辅助理解.另对于上面所提的bm和sunda...
2018-10-23 19:52:56 190
原创 网络流0.2
网络流0.2Table of Contents网络流基本介绍代码实现(p3376)DINICEK 基本介绍在一定容量在众多路径中找最大流量,思路:增广(bfs)+反向弧,代码+注解就能懂的基本操作.简单解释反向弧,就是在发现一步操作不最优时,不撤回而是往回走一步抵消其影响.不懂?贴两个温馨提示:代码+注解 原理解释代码实现(p3376)...
2018-10-19 21:16:00 170
原创 树状数组0.1
树状数组0.1目录树状数组 基本概念树状数组的查询和修改的时间复杂度都是log(n),空间复杂度则为O(n), 通过将线性结构转化成树状结构,从而进行跳跃式扫描。通常使用在高效的计算数列的前缀和,区间和。代码实现单点+区间 修改+查询#include <cstdio>#include <iostream>#define L long...
2018-10-18 12:32:51 134
原创 二分答案0.2
二分答案 二分答案是对答案用二分的方式进行枚举,通过缩小范围逐步逼近答案,是一种高效的枚举方式,主要有二分小数及二分整数两种.通常体现为"最 值最 ".在实际做题时不一定严格二分,三分甚至更多分都可以.
2017-12-21 20:29:53 443
原创 LCA 0.3
LCA基本概念 LCA是求最近公共祖先问题,有在线st/RMQ和离线Tarjan/并查集两种算法,以及倍增的特殊做法.因为代码复杂度问题,通常选用dfs实现的Tarjan来解决. Tarjan算法只需要遍历一次树 (一边遍历一边查询,所以要先存储询问) ,所以其时间复杂度是
2017-10-22 21:26:02 275
原创 Tarjan 0.2
TarjanTarjan是一种求有向图强联通分量的算法, 是用dfs实现以及时间戳标记访问最短时间的.Tarjan算法中每个点都需要扩展边,为了存储方便,推荐使用邻接表.Tarjan算法的优势在于其灵活性,基础代码可以直接适用于多数情况.常见于dfs序.
2017-10-17 11:03:56 302
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人