摘要: 基本算法 位运算 枚举 贪心 递归 分治 递推 构造 模拟 数据结构 简单数据结构 树形结构 树的直径 线段树 树状数组 字典树 伸展树 左偏树 动态树 lca&rmq 划分树 SBT 字符串 kmp AC自动机 后缀数组 最小表示法 其它 并查集 散列表 单调栈 块状链表 双向链表 离线分治算法 阅读全文
posted @ 2019-07-27 08:29 然墨 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 传送门:https://ac.nowcoder.com/acm/contest/1080/C 题意: 有n个人,每个人都有着自己的价值 Vi ,但是这些人都很孤僻,他们只能忍受最多 Si 个人聚在一起。请问如何选择可以使聚在一起的人的价值和最高。 思路: 1.首先会想到按每个人的 Si 来枚举,自然 阅读全文
posted @ 2019-08-25 17:13 然墨 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 题集传送门(1~12) (壹)01背包 有N个物品和一个体积为V的背包,每个物品体积为v[i],价值为w[i],问背包可收纳的最大价值。 时间复杂度O(N*V)。 1 /* 2 f[m]即为答案。 3 如果要表示恰好去体积为V的物品, 4 可以把除f[0]外全置为负无穷, 5 以保证是f[m]从f[ 阅读全文
posted @ 2019-08-22 17:19 然墨 阅读(221) 评论(0) 推荐(0) 编辑
摘要: kosaraju 原理见下: https://www.bilibili.com/video/av24232953/ https://www.bilibili.com/video/av24233053/ Tarjan 阅读全文
posted @ 2019-08-05 10:34 然墨 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 一个非常有意思的区间染色问题,使用线段树的途中还有一些有趣的操作。 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<queue> 5 #define ll long long 6 #define inf 0 阅读全文
posted @ 2019-08-02 10:52 然墨 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 分层图最短路是指在可以进行分层图的图上解决最短路问题。 一般模型是: 在图上,有k次机会可以直接通过一条边,问起点与终点之间的最短路径。——引自百度百科 模板题目:https://ac.nowcoder.com/acm/contest/884/J https://www.luogu.org/prob 阅读全文
posted @ 2019-07-28 16:54 然墨 阅读(459) 评论(0) 推荐(0) 编辑
摘要: 给定一棵树,树中每条边都有一个权值,树中两点之间的距离定义为连接两点的路径边权之和。树中最远的两个节点之间的距离被称为树的直径,连接这两点的路径被称为树的最长链。后者通常也可称为直径,即直径是一个 数值概念,也可代指一条路径。 树的直径求法 树形DP 二次搜索 原理:p到q就是树的一条直径。因为p必 阅读全文
posted @ 2019-07-28 09:40 然墨 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 并查集(Disjoint-Set)是一种可以动态维护若干不重叠集合,并支持合并与查询的数据结构。 普通并查集 处理普通合并问题 代码实现: 逆向并查集 并查集一般用于构建连接,处理断开时就乏力了,为此我们可以先存下所有操作,建立一个全连接图(依题),然后倒序处理操作。 边带权并查集 当两个点之间不仅 阅读全文
posted @ 2019-07-27 09:05 然墨 阅读(206) 评论(0) 推荐(0) 编辑