随笔分类 -  ICPC-模板

摘要:单调栈简单点说就是维护一个元素满足单调性的栈,即栈内元素总是单调的 找出序列中某一个元素 左边/右边 第一个 比它 大/小 的元素的位置 用单调栈做的话,复杂度是 O(n) 的 如果要求比某一元素小的 第一个 元素的位置的话,维护递减 如果要求比某一元素大的 第一个 元素的位置的话,维护递增 裸题在 阅读全文
posted @ 2018-04-21 16:56 qwerity 阅读(268) 评论(0) 推荐(0)
摘要:混合图 : 同时包含有有向边以及无向边的图 求解混合图的欧拉路径/回路问题需要先了解 有向or无向图的欧拉回路/路径问题 ==> Click here 图论最大流算法 ==> Click here (误) 好了!接下来就是混合图欧拉回路/路径的算法讲解了 好吧,其实我并不会讲,但是找到了一个很详细且 阅读全文
posted @ 2018-04-10 22:22 qwerity 阅读(409) 评论(0) 推荐(0)
摘要:欧拉路径(瞎)定义 : 如果有一条路径使得能够走完所有的边且每一条边经过有且只有一次,这样的路径叫做欧拉路径 欧拉回路定义 : 如果有从起点出发最后回到起点的一条路径使得能够走完所有的边且每条边经过有且只有一次,称其为欧拉回路 根据定义,欧拉回路是欧拉路径的一个子集,存在欧拉回路定存欧拉路径,反之则 阅读全文
posted @ 2018-04-08 20:21 qwerity 阅读(301) 评论(0) 推荐(0)
摘要:Floyd 可以求解图上的最小环 这里需要注意的是无向图和有向图的求法是不一样的 有向图 : 正常跑一遍 Floyd 再遍历所有的 dp[i][i] 即自身到自身的距离,便是所求的最小环 #include<bits/stdc++.h> using namespace std; const int m 阅读全文
posted @ 2018-04-05 18:49 qwerity 阅读(188) 评论(0) 推荐(0)
摘要:不严格说明什么是二分图 ==> 能将图的顶点分为两个集合、同一集合中的顶点没有边相连 匹配 ==> 在图G中两两没有公共端点的边集合M ⊆ 边集合E 除了匹配顺便说一些其他的术语 边覆盖 ==> 在图G中任意顶点都至少是F中某条边的端点的边集合F ⊆ E 独立集 ==> 在G中两两互不相连的顶点集合 阅读全文
posted @ 2018-03-17 22:30 qwerity 阅读(188) 评论(0) 推荐(0)
摘要:二分法适用于在单调函数上通过不断逼近的方式寻找答案,一般用于“判定性问题” 而三分法则用于凹凸函数,寻找其凹点和凸点 例如上图的函数是个凸函数,蓝色点便是凸点 三分的基本步骤就是先将 [ L, R ] 分为 [ L, mid ] && [ mid, R ] 中点为 mid 然后将 [ mid, R 阅读全文
posted @ 2018-03-13 17:45 qwerity 阅读(484) 评论(0) 推荐(0)
摘要:拓扑排序复习 ==> 链接 将图进行拓扑排序之后,能在拓扑序列上做一些动态规划算法(DAG上的DP) 阅读全文
posted @ 2018-02-08 16:27 qwerity 阅读(223) 评论(0) 推荐(0)
摘要:模板从 这里 搬运,链接博客还有很多网络流题集题解参考。 最大流模板 ( 可处理重边 ) const int maxn = 1e6 + 10; const int INF = 0x3f3f3f3f; struct Edge { int from,to,cap,flow; Edge(){} Edge( 阅读全文
posted @ 2018-01-06 16:56 qwerity 阅读(259) 评论(0) 推荐(0)
摘要:成段更新: #include <cstdio> #include <algorithm> using namespace std; #define LL long long #define lson l , m , rt << 1 #define rson m + 1 , r , rt << 1 | 阅读全文
posted @ 2017-12-24 11:23 qwerity 阅读(271) 评论(0) 推荐(0)
摘要:lower_bound()在first和last中的前闭后开区间进行,返回大于或等于val的第一个元素位置。 如果所有元素都小于val,则返回last的位置 1、查找最后一个小于或者等于key的下标,若不存在,则返回-1 int BinSearch(int a[], int n, int key) 阅读全文
posted @ 2017-11-18 12:51 qwerity 阅读(270) 评论(0) 推荐(0)
摘要:后缀数组资料参考 ==> 链接1 、 链接2 、 论文《后缀数组——处理字符串的有力工具》 、 Height数组与H数组讲解 DA(倍增算法) 时间复杂度是 O(nlogn),然后空间复杂度是 O(n) const int N = 100005; int wa[N],wb[N],wv[N],ws[N 阅读全文
posted @ 2017-11-16 20:48 qwerity 阅读(237) 评论(0) 推荐(0)
摘要:差分约束系统详解(极力推荐)==> http://www.cppblog.com/menjitianya/archive/2015/11/19/212292.html 个人瞎想 : 差分约束系统的题最重要的就是充分利用题目条件建立模型、构造出不等式最后使用最短路来算出答案,当然有些题目即使构造出了若 阅读全文
posted @ 2017-11-11 22:36 qwerity 阅读(209) 评论(0) 推荐(0)
摘要:并查集是一种优秀的数据结构、最基本的其能够做快速判断两个元素是否同属一个集合、根据这个特点其能够做的事情就非常多了!举个例子就是能够判断无向图的连通性、优化链式查找、帮助构建最小生成树等等。并查集能存储的元素加上向量后还能存储一系列的关系,解决一些问题矛盾判断问题,总之并查集好理解又好写,是必备的技 阅读全文
posted @ 2017-10-20 22:59 qwerity 阅读(339) 评论(0) 推荐(0)
摘要:Floyd算法适用于求解全源最短路、也就是能够求解任意两点间的最短路径并且是适用于含有负权边的图,但是含有负环则不行了!空间复杂度为O(n2)、时间复杂度为O(n3)。其具体的原理在百度能够找到很多,下面只说说我的理解,首先关键代码如下 即枚举所有的点去作为中转点去松弛 i 和 j ,那考虑这样的一 阅读全文
posted @ 2017-10-20 20:06 qwerity 阅读(415) 评论(0) 推荐(0)
摘要:Bellman-ford 算法适用于含有负权边的最短路求解,复杂度是O( VE ),其原理是依次对每条边进行松弛操作,重复这个操作E-1次后则一定得到最短路,如果还能继续松弛,则有负环。这是因为最长的没有环路的路,也只不过是V个点E-1条边构成的,所以松弛E-1次一定能得到最短路。因此这个算法相比 阅读全文
posted @ 2017-10-18 23:35 qwerity 阅读(275) 评论(0) 推荐(0)
摘要:Dijkstra算法适合求不包含负权路的最短路径,通过点增广、在稠密图中使用优化过的版本速度非常可观。本篇不介绍算法原理、只给出模板,这里给出三种模板,其中最实用的是加上了堆优化的版本 算法原理 or 学习参考链接 : 点我 、不要点它点我!、为何不适用于带负权边图 ( Dijkstra 动态演示 阅读全文
posted @ 2017-10-18 16:54 qwerity 阅读(475) 评论(0) 推荐(0)
摘要:在做图有关的题目,在一些情况下邻接矩阵耗费空间较大、动态开辟的邻接表又耗时耗内存,这时候你可能需要一个静态邻接表! 静态邻接表在各种图的算法当中也是有一席之地的,比如利用堆优化的Dij算法求最短路、SPFA等等 下面给出我的静态邻接表模板 阅读全文
posted @ 2017-10-17 13:18 qwerity 阅读(567) 评论(0) 推荐(1)
摘要:模板 #include<queue> #include<stdio.h> #include<string.h> using namespace std; const int Max_Tot = 5e5 + 10; const int Max_Len = 1e6 + 10; const int Let 阅读全文
posted @ 2017-10-01 20:29 qwerity 阅读(213) 评论(0) 推荐(0)
摘要:模板 : const int Bit = 32; struct Trie { Trie *ch[2]; LL v; inline void init(){ for(int i=0; i<2; i++) this->ch[i] = NULL; this->v = -1; } }; Trie *root 阅读全文
posted @ 2017-09-29 15:23 qwerity 阅读(464) 评论(0) 推荐(0)
摘要:模板 : #include<string.h> #include<stdio.h> #include<malloc.h> #include<iostream> #include<algorithm> using namespace std; const int maxn = 26; struct T 阅读全文
posted @ 2017-09-27 23:24 qwerity 阅读(303) 评论(0) 推荐(0)