微信扫一扫打赏支持

随笔分类 -  3_算法和数据结构

上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 17 下一页
摘要:分块算法(简洁易懂) 分块 先简单介绍一下分块算法。 分块算法是一种很常见的根号算法,一般它的时间复杂度会带根号。 分块和线段树的区别在于,分块算法可以维护一些线段树维护不了的东西,例如单调队列等,线段树能维护的东西必须能够进行信息合并,而分块则不需要。不过,它们也有共同点,分块和线段树一样,分块需 阅读全文
posted @ 2017-12-26 11:19 范仁义 阅读(3157) 评论(0) 推荐(0)
摘要:分块算法 1.思想 如果我们需要对一个特定的序列进行操作,那么非常直观、简单的方法就是纯暴力(不,那叫模拟)。 不过如果暴力能过的话,那就呵呵了。 所以我们要想一些比较高能的数据结构——分块。 相比线段树来说,分块算法比较难实现,但是只要深入理解,就可以实现了,只不过需要一些数据结构的辅助。 分块实 阅读全文
posted @ 2017-12-26 10:57 范仁义 阅读(525) 评论(0) 推荐(0)
摘要:P1198 [JSOI2008]最大数(线段树) 题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1、 查询操作。 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值。 限制:L不超过当前数列的长度。(L>=0) 2、 插入操作。 语法:A n 功能:将n加上t,其 阅读全文
posted @ 2017-12-26 10:52 范仁义 阅读(761) 评论(0) 推荐(0)
摘要:P1197 [JSOI2008]星球大战(并查集判断连通块+正难则反) 并查集本来就是连一对不同父亲的节点就的话连通块就少一个。 题目描述 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系。某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星 阅读全文
posted @ 2017-12-26 04:24 范仁义 阅读(474) 评论(0) 推荐(0)
摘要:P1196 [NOI2002]银河英雄传说(并查集) 本题关键 用两个一维数组表示了一个稀疏的二维数组。 这两个一维数组一个表示祖先(就是最前面那个),一个表示距离祖先的距离。 并且还有一个关键点是,距离祖先的距离是在并查集中动态更新的。 题目描述 公元五八○一年,地球居民迁至金牛座α第二行星,在那 阅读全文
posted @ 2017-12-26 04:04 范仁义 阅读(626) 评论(0) 推荐(1)
摘要:最长公共字串 解释: 当A[i]==B[j]的情况下,我不能像相等情况下把他们都去掉然后加0来得到子问题,因为这样会造成缺失,因为A[i]可能会和B[j-1]或前面的相等 A串:ABCBDAB B串:BDCABA 最长公共字串的长度就是:4 BCBA dp[i][j]表示:A串的前i个字符和B串中的 阅读全文
posted @ 2017-12-24 14:46 范仁义 阅读(230) 评论(0) 推荐(0)
摘要:P1613 跑路(倍增) 题目描述 小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零。可是小A偏偏又有赖床的坏毛病。于是为了保住自己的工资,小A买了一个十分牛B的空间跑路器,每秒钟可以跑2^k千米(k是任意自然数)。当然,这个机器是用longint存的, 阅读全文
posted @ 2017-10-26 13:44 范仁义 阅读(685) 评论(0) 推荐(0)
摘要:递归和迭代的区别 参考: 递归和迭代的区别 - CSDN博客http://blog.csdn.net/swliao/article/details/5337896 递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调用自己. 一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大型的 阅读全文
posted @ 2017-10-22 10:44 范仁义 阅读(1357) 评论(0) 推荐(0)
摘要:求最小生成树(暴力法,prim,prim的堆优化,kruskal) 5 71 2 22 5 21 3 41 4 73 4 12 3 13 5 6 我们采用的是dfs的回溯暴力,所以对于如下图,只能搜索到3条路,就是那种dfs的路。 思路: 暴力求最小生成树求这个图的最小生成树我就要看有多少个点被选进 阅读全文
posted @ 2017-09-16 18:42 范仁义 阅读(1156) 评论(0) 推荐(0)
摘要:暴力求最短路 5 71 2 22 5 21 3 41 4 73 4 12 3 13 5 6 思路: 求1-5的最短距离找所有1可以直接到达的点,从这些点再去找5,并且记录我现在已经走了的长度如果找打5,就比较最短路输出最短路的最优值在某条路中,点被走过,就不能再走了 1 #include <bits 阅读全文
posted @ 2017-09-16 15:52 范仁义 阅读(262) 评论(0) 推荐(0)
摘要:C++ pair Pair类型概述 pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同,基本的定义如下: pair<int, string> a; 表示a中有两个类型,第一个元素是int型的,第二个元素是string类型的,如果创建pair的时候没有对其进行初始化,则调用默认构造函数 阅读全文
posted @ 2017-09-14 18:25 范仁义 阅读(385) 评论(0) 推荐(0)
摘要:priority_queue priority_queue就是一个堆,并且默认情况下位大根堆。 返回队列中数据的个数 可以看出priority_queue的函数列表与栈stack的函数列表是相同的。 priority_queue优先队列,插入进去的元素都会从大到小排好序 PS:在priority_q 阅读全文
posted @ 2017-09-13 00:05 范仁义 阅读(384) 评论(0) 推荐(0)
摘要:双向链表插入节点 1、根据实例分析 2、把节点之间的关系看成 是边的拆除和重建 3、为了方便叙述,给边标了号 如图所示是我们要操作的结构体和在双向链表的图。 现在我们的目的就是在ab节点之间插入x节点。 现在我把这六条线都遍上号: 在插入之前,2,6这两条边是存在的,这两条边就是: 在插入之后,2, 阅读全文
posted @ 2017-09-12 23:15 范仁义 阅读(8760) 评论(1) 推荐(1)
摘要:深入理解dijkstra+堆优化 其实就这几种代码几种结构,记住了完全就可以举一反三,所以多记多练多优化多思考。 Dijkstra 对于一个有向图或无向图,所有边权为正(边用邻接矩阵的形式给出),给定a和b,求a到b的最短路,保证a一定能够到达b。这条最短路是否一定存在呢?答案是肯定的。相反,最长路 阅读全文
posted @ 2017-09-12 00:51 范仁义 阅读(13167) 评论(0) 推荐(19)
摘要:差分约束2 参考: 夜深人静写算法(四) - 差分约束 - 英雄哪里出来 - C++博客http://www.cppblog.com/menjitianya/archive/2015/11/19/212292.html 一、引例 1、一类不等式组的解 给定n个变量和m个不等式,每个不等式形如 x[i 阅读全文
posted @ 2017-09-12 00:48 范仁义 阅读(507) 评论(0) 推荐(0)
摘要:前向星和链式前向星 1、前向星 前向星是以存储边的方式来存储图,先将边读入并存储在连续的数组中,然后按照边的起点进行排序,这样数组中起点相等的边就能够在数组中进行连续访问了。它的优点是实现简单,容易理解,缺点是需要在所有边都读入完毕的情况下对所有边进行一次排序,带来了时间开销,实用性也较差,只适合离 阅读全文
posted @ 2017-09-12 00:34 范仁义 阅读(4647) 评论(1) 推荐(4)
摘要:线段树2 求区间最小值 递归,DFS,尤其是二叉树,我只要知道我的返回节点就好,因为DFS的顺序一定是一样的,不同的题目和数据范围也是一样的,只是返回节点让DFS的深度不同。 递归的内容只有两部分:1、不停的递归查找 2、到了叶子节点我返回 所以写递归的时候明确这两块就好。 只是这里在DFS里面还多 阅读全文
posted @ 2017-09-11 23:36 范仁义 阅读(2302) 评论(0) 推荐(0)
摘要:区间覆盖(线段树) X轴上方有若干条平行于X轴的线段,求这些线段能够覆盖X轴的总长度? 输入格式 第一行一个数n(n<=100000),表示线段个数; 接下来n行,每行两个整数a[i],b[i](-10^8<=a[i],b[i]<=10^8),代表一个线段的两个端点输出覆盖X轴的长度 输入样例 2 阅读全文
posted @ 2017-09-11 23:27 范仁义 阅读(1971) 评论(0) 推荐(1)
摘要:差分约束 参考: 夜深人静写算法(四) - 差分约束 - 英雄哪里出来 - C++博客http://www.cppblog.com/menjitianya/archive/2015/11/19/212292.html 夜深人静写算法(四) - 差分约束 - 英雄哪里出来 - C++博客http:// 阅读全文
posted @ 2017-09-11 23:24 范仁义 阅读(694) 评论(0) 推荐(0)
摘要:二维数组 1、 a[0]的地址和a[0][0]相同,因为a[0][0]是a[0](因为是二维数组,所以现在a[0]是个指针,指向一维数组)的首地址。 a的地址和a[0]相同,是因为a[0]是a数组的首字母。 a[0]的值和地址相同,是因为a[0]现在是一个数组(也是指针),指向的就是首元素的地址。 阅读全文
posted @ 2017-09-10 23:22 范仁义 阅读(1273) 评论(0) 推荐(0)

上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 17 下一页