上一页 1 ··· 3 4 5 6 7
摘要: 题面 思路一:纯模拟。(暴力不是满分) 思路: 1、定义一个二维数组。 2、根据每个数据给二维数组赋值。 3、最后输出那个坐标的值。 思路二(正规思路): 逆序找,因为后来的地毯会覆盖之前的,一发现有解就输出 阅读全文
posted @ 2019-07-31 10:10 神之右大臣 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 直接看代码似乎更清晰一些 我们一开始要建一棵空线段树,然后一个一个的添加线段树。加入线段树后会是这样: 再加入[1, 至此,裸树就建好了,并且只用了O(nlogn)的空间。 查询的时候存两个点,一开始为两个区间的根结点,两结点的差比大小,两个点要同时往左/右跳。 经典问题,区间第k小: 每个线段树i 阅读全文
posted @ 2019-07-30 18:33 神之右大臣 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 树的重心:对于一颗n个节点的无根树,找到一个点,使得把树变成以该节点为根的有根树时,最大子树的节点数最小,也就是说删除这个点后最大联通块的节点数最小其实求树的重心算是一个比较基础的树形dp。用dp[i]代表以i为根的子树的所有节点个数(包含i节点本身),如果要以i为重心的话,那么其最大子树的节点数就 阅读全文
posted @ 2019-07-30 14:07 神之右大臣 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 树的直径给定一棵树,树中每条边都有一个权值,树中两点之间的距离定义为连接两点的路径边权之和。树中最远的两个节点之间的距离被称 为树的直径,连接这两点的路径被称为树的最长链。后者通常也可称为直径。 树形DP求树的直径(时间复杂度:O(n))设1号节点为根,"N个点N-1条边的无向图"就可以看做“有根树 阅读全文
posted @ 2019-07-29 21:02 神之右大臣 阅读(131) 评论(0) 推荐(0) 编辑
摘要: day1题目及题解 day2题目及题解 day3题目及题解 day4题目及题解 day5题目及题解 day6题目及题解 阅读全文
posted @ 2019-07-27 21:01 神之右大臣 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 重点:如果使用多个-O选项(包含或不包含级别编号),则最后一个选项是有效的选项。 例如:#pragma GCC optimize(2)#pragma G++ optimize(2)这就是传说中的氧气优化 以下总结来源于网络-O、-O1:优化编译需要更多时间,并且大型函数需要更多内存。使用-O选项,编 阅读全文
posted @ 2019-07-26 20:54 神之右大臣 阅读(3046) 评论(0) 推荐(0) 编辑
摘要: Dijkstra算法适用于边权为正的无向和有向图,不适用于有负边权的图!!! 基本思想: 1.将图上的初始点看作一个集合S,其它点看作另一个集合 2.根据初始点,求出其它点到初始点的距离d[i] (若相邻,则d[i]为边权值;若不相邻,则d[i]为无限大) 3.选取最小的d[i](记为d[x]),并 阅读全文
posted @ 2019-07-19 14:20 神之右大臣 阅读(2854) 评论(0) 推荐(0) 编辑
摘要: spfa队列优化(用来求最短路) 实现方法: 1.存入图。可以使用链式前向星或者vocter。 2.开一个队列,先将开始的节点放入。 3.每次从队列中取出一个节点X,遍历与X相通的Y节点,查询比对 Y的长度 和 X的长度+ X与Y的长度 如果X的长度+ X与Y的长度 > Y的长度,说明需要更新操作。 阅读全文
posted @ 2019-07-19 14:00 神之右大臣 阅读(354) 评论(0) 推荐(0) 编辑
摘要: #include <vector> 1.支持随机访问,但不支持在任意位置O(1)插入; 2.定义: ```cpp vector<int> a; ``` 3.a.size()返回a的长度,a.empty()返回bool型用来判断是否为空; O(1) 4.a.clear()清除a;O(n) 5.a的迭代 阅读全文
posted @ 2019-07-19 13:58 神之右大臣 阅读(352) 评论(0) 推荐(0) 编辑
摘要: what is 网络流 相信大家都听过网络流这个名字。哦?你知道网络,还知道输入输出流?呀,看来你已经会网络流了啊! 嗯,开个玩笑 网络流(network-flows)是一种图论算法,说起来可能比较抽象,不过我们可以把网络图想象成一个水管分布图,网络流就相当于水流。边就是水管,节点就是一个转换水流的 阅读全文
posted @ 2019-07-17 14:06 神之右大臣 阅读(5364) 评论(1) 推荐(1) 编辑
摘要: 在这里介绍一种时间复杂度为O(nlognlogn)的算法。其实,这里用到了分治的思想。将所给平面上n个点的集合S分成两个子集S1和S2,每个子集中约有n/2个点。然后在每个子集中递归地求最接近的点对。在这里,一个关键的问题是如何实现分治法中的合并步骤,即由S1和S2的最接近点对,如何求得原集合S中的 阅读全文
posted @ 2019-07-17 13:32 神之右大臣 阅读(956) 评论(0) 推荐(0) 编辑
摘要: 1.欢迎大家挂我博客的友链哦,想让我挂你的友链请给我你的博客的url,给我邮箱发邮件就可以:929748055@qq.com。 2.玩了玩github,发现不错。作为练手我在github上了做了个索引界面:https://kamimxr.github.io/,欢迎大家来参观~。 3.对于阴阳师202 阅读全文
posted @ 2019-06-27 19:15 神之右大臣 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 史上代码最简单,讲解最清晰的双连通分量 (需提前学习强连通分量) 双连通分量的主要内容包括割点、桥(割边)、点双和边双,分别对应 4 个 Tarjan 算法。 所有算法的时间复杂度均为 O(n + m)。 双连通分量用到 DFS 树的性质,所有的边分别树边和返祖边两类,大大简化了代码。 双连通分量具 阅读全文
posted @ 2019-06-19 19:16 神之右大臣 阅读(2622) 评论(1) 推荐(2) 编辑
上一页 1 ··· 3 4 5 6 7