摘要: 素数筛法是数论的入门,当然也非常重要。所谓素数(也叫质数),就是因数只有1和它本身的数。 今天讲一下怎么筛素数。 第一种算法,就是最朴素最暴力的算法,是人的都会。就是对于每一个数n,从 i = 2开始,依次判断n能否被i整除。 好想的当然也就慢,这个算法复杂度是O(nlogn),当n为1e7 时就过 阅读全文
posted @ 2018-02-25 19:51 mrclr 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 题目大意就是给长度为 n 一个数列,有 n 每次删除,每一次删除第 i 个位置上的数,求每一次删除后剩余不连续数列的最大区间和。 输入样例 4 1 3 2 5 3 4 1 2 输出样例 5 4 3 0 第二行是原来的数列,第三行是删除第 i 个数。 这道题的正解是用并查集来做。要将删除的顺序存下来, 阅读全文
posted @ 2018-02-22 16:56 mrclr 阅读(237) 评论(0) 推荐(1) 编辑
摘要: LCA就是最近公共祖先,比如 节点10和11的LCA就是8,9和3的LCA就是3。 我们这里讲一下用树上倍增来求LCA。 大家都可以写出暴力解法,两个节点依次一步一步往上爬,直到爬到了相同的一个节点。 二树上倍增就是对暴力的优化,改成了一次爬好几步。 具体怎么爬呢?就是两个点每次爬 2^j 步,而 阅读全文
posted @ 2018-02-22 16:17 mrclr 阅读(207) 评论(0) 推荐(0) 编辑
摘要: LCA(Lowest Common Ancestor 最近公共祖先)定义如下:在一棵树中两个节点的LCA为这两个节点所有的公共祖先中深度最大的节点。 比如这棵树 结点5和6的LCA是2,12和7的LCA是1,8和14的LCA是4。 这里讲一下将LCA转化成RMQ问题,进而用st表求解。 首先我们跑一 阅读全文
posted @ 2018-02-21 23:21 mrclr 阅读(311) 评论(0) 推荐(0) 编辑
摘要: LCA(Lowest Common Ancestor 最近公共祖先)定义如下:在一棵树中两个节点的LCA为这两个节点所有的公共祖先中深度最大的节点。 比如这棵树 结点5和6的LCA是2,12和7的LCA是1,8和14的LCA是4。 这里讲一下用树链剖分来求LCA。 先想一下,若要求结点13和4的LC 阅读全文
posted @ 2018-02-21 21:54 mrclr 阅读(373) 评论(0) 推荐(0) 编辑
摘要: RMQ 即范围最小值问题 (Range Minimum Query)。给出一个 n 个元素的数组,设计一个数据结构,支持查询操作 Query(L, R):计算该区间内的最小值。 如果用朴素的算法的话,每一次一个循环求解,那时间复杂度就达到了 O(mn),显然不够快。在实践中,最常用的是 Tarjan 阅读全文
posted @ 2018-02-16 14:46 mrclr 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 前缀和是一种重要的预处理,能大大降低查询的时间复杂度。 最简单的一道题就是给定 n 个数和 m 次询问,每次询问一段区间的和。求一个 O(n + m) 的做法。 用 O(n) 前缀和预处理,O(m) 询问。 主要代码 升级版 给定一个n*n的矩阵,找一个最大的子矩阵,使得这个子矩阵里面的元素和最大。 阅读全文
posted @ 2018-02-06 20:52 mrclr 阅读(23242) 评论(3) 推荐(10) 编辑
摘要: 先看一到例题 给定 n 个数(可能相同),出现次数最多的数出现了多少次。(ai <= 10 ^ 9) 嗯……这道题看似一道水题,只要开一个 vis 数组记录每一个数字出现的次数即可,比如 vis[a[i]]++。但是值得注意的是,ai可能非常大,这就导致 vis 数组会开不下,因此,就要用到离散化。 阅读全文
posted @ 2018-02-06 16:31 mrclr 阅读(448) 评论(0) 推荐(0) 编辑
摘要: 题目描述 已知有两个字串 A, B 及一组字串变换的规则(至多6个规则): A1 -> B1 A2 -> B2 规则的含义为:在 A$中的子串 A1 可以变换为 B1、A2 可以变换为 B2 …。 例如:A='abcd'B='xyz' 变换规则为: ‘abc’->‘xu’‘ud’->‘y’‘y’-> 阅读全文
posted @ 2018-02-03 22:07 mrclr 阅读(293) 评论(0) 推荐(0) 编辑
摘要: map map 的意思是映射。用法一般是 map<char, int>mp 按照我的理解,map 类似于一个高级的数组。前面的数据类型 char 相当于下脚标,而数组元素的值就对应着后面的类型 int。例如可以用一个 map<string, int>month_name 来表示“月份名字对应的月份编 阅读全文
posted @ 2018-02-03 20:53 mrclr 阅读(311) 评论(0) 推荐(1) 编辑