算法模板基础
文章平均质量分 51
一些基本功
GoesM
业余兴趣,随便搞搞
展开
-
【模板】素数筛、素性测试
素数筛选、标记、素数判断。原创 2022-11-20 19:52:53 · 221 阅读 · 0 评论 -
【模板】最短路问题系列(Dijkstra、SPFA、A*等算法)
单源最短路径、多源最短路径。原创 2022-11-12 16:57:07 · 373 阅读 · 0 评论 -
【模板】强连通分量——Tarjan 缩点
tarjan啊(⊙o⊙)… 嗯。。我的理解可能比较诡异先说缩点: 洛谷P3387 的模板题目描述 给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大。你只需要求出这个权值和。 允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次。输入格式: 第一行,n,m 第二行,n个整数,依次代表点权 第三至m+2行,每行两个整数u,v,表示u->v有一原创 2017-10-03 15:40:59 · 1419 阅读 · 1 评论 -
【模板】强连通分量——Tarjan 割点
嗯》。。。前面说了tarjan缩点 现在来tarjan割点看洛谷试炼场提高组模板,啥都有2333先说割点的定义 就是你把这个点和与这个点相连的边都咔嚓了之后 原来相互连接在一起的一堆点,就变成相互连接在一起的两堆点 专业点就是一个联通快变成了两个联通快值得注意的是根节点不是割点,不然就会像我一样傻傻两天不知错在何处嗯…….同样是tarjan, 因为我们会发现在一个环内而不跟环外任意一点相连原创 2017-10-03 16:01:36 · 293 阅读 · 0 评论 -
【模板】轻重链树链剖分
洛谷P3384 【模板】轻重链剖分/树链剖分(ps.蒟蒻又来学别人早就会的东西了orz 甚至还重学了半天倍增和LCA//借鉴学习from :https://www.cnblogs.com/chinhhh/p/7965433.html需要实现操作:将树从x到y结点最短路径上所有节点的值都加上z求树从x到y结点最短路径上所有节点的值之和将以x为根节点的子树内所有节点值都加上z求以x为根节点的子树内所有节点值之和数据范围:节点数1e5,操作数1e5。思路总结:根据轻重链的划分、dfs序特性原创 2022-03-24 17:15:19 · 205 阅读 · 0 评论 -
【模板】RMQ算法 && 用RMQ做LCA(倍增+动态规划)
早学了RMQ,今天才写了 其实就是一个比较特别的动规吧(⊙o⊙)… 用来求区间最值的一个算法嗯……..就是一个动态转移方程 dp[i][j]表示以第i个数字为开头,往后2的j次方个数字中最大的那个数字是哪一个 dp[i][j]=min/max (dp[i][j-1],dp[i+ (2的j次方) ][j-1]) 很神奇的一个东西。 也很好实现查询(x,y)的时候 int k=log(y原创 2017-10-02 18:18:45 · 530 阅读 · 0 评论 -
【模板】MST最小生成树(Prim算法、Krustra算法)
给一张n个点的图,从中选 n-1条边,使得所选边权和最小的情况下生成一个树。:贪心。原创 2022-11-12 16:41:18 · 473 阅读 · 0 评论 -
【模板】凸包问题
模板题:洛谷P2742 圈奶牛 [USACO5.1]Fencing the CowsPart 1 Concept凸包概念:(非数学用语)简单来讲就是,二维坐标系中给定若干点坐标,尽可能少地选择其中若干个点进行两两连线,使连线能包含所有给定点。【精准数学定义详见计算几何中对凸包的定义】凸包性质:如果要将给定所有点全部围住,且要求最终多边形周长最短,则凸包为这一问题的最优方案(证明:两点间直线最短)(注:凸包并非面积最小的最优解;面积最小 很可能是凹多边形)可借助下图思考。(图源:https://原创 2022-03-31 17:00:00 · 244 阅读 · 0 评论 -
【模板】KMP字符串匹配
模板题:洛谷P3375暴力的复杂度O(mn)KMP复杂度O(Part 1: 匹配的思路优化:txt表示长串,pat表示短串,目标是在长串中找出短串的所在位置记: i 为txt下标, j 为pat下标, 均表示当前待判断的位置, 字符串下标从0开始。If ( txt[i]==pat[j] ){//如果匹配 i++,j++;//就下一位置}else{//如果不匹配 j=k;//令j=k //其中, k符合:pat[0,k-1]==txt[i-k,i-1] //即pat的长度为k-1的前缀原创 2022-03-29 23:49:43 · 215 阅读 · 0 评论 -
【模板】最长回文子串(马拉车)
刷模板,啧 就是一个很套路的求最长回文子串的方法len[i]表示以i为中心向外拓展的最长回文串的,最右端点到i的距离 然后我们对原串做点手脚 每两个字符之间和头尾都加一个’#’ 然后简单推出len[i]=原以i为中心的最长回文子串的长度-1 所以最后答案及时 max(len[i])-1 然后我们就可以避免回文串的奇偶问题之后的时间复杂度优化的理论 ※记录p为所有回文子串的右端点的位置,原创 2017-10-03 20:40:58 · 497 阅读 · 0 评论 -
【模板】最长上升子序列LIS (贪心+二分)
LIS原创 2022-07-24 17:20:25 · 108 阅读 · 0 评论 -
【模板】最长公共子序列
夯实基础2333模板1:蓝桥杯-算法提高-最长公共子序列就是处理字符串的#include<iostream>#include<cstring>#include<cstdio>using namespace std;#if 0Goes && G.S.M.Title://蓝桥杯-算法提高-最长公共子序列 #endif//dp[i][j]分别以i结尾 以j结尾 的公共子序列长度//if(s[i]==s[j]) dp[i][j]=dp[i-原创 2022-04-07 13:28:35 · 183 阅读 · 0 评论 -
【模板】SBT 普通平衡树
平衡树原创 2017-11-24 16:34:18 · 2478 阅读 · 1 评论 -
【模板】 线段树
在大家都已经学完treap的时候我终于开始学线段树原创 2017-11-20 15:29:57 · 249 阅读 · 1 评论 -
【模板】归并排序&逆序对
洛谷P1908 && 蓝桥杯算法提高 逆序对利用归并排序思路解决逆序对问题(二分思想)#include<iostream>#include<cstring>#include<cstdio>using namespace std;#if 0Goes && G.S.M.Title://逆序对数量,归并排序 O(nlogn)//思路:对于相邻两段,有序的a[l,mid]与有序的a[mid+1,r]//可以O(r-l+1)计算原创 2022-04-07 13:31:19 · 125 阅读 · 0 评论 -
基础(printf 的用法 && 结构体重载运算符)
过基础过基础printf 输出浮点型 printf(“%.2lf”,a); 浮点型数字输出保留两位小数“2”“lf” 其他不说了,都知道(⊙o⊙)…结构体的重载运算符struct ss{ int num; bool operator <(const ss a)const { return num<a.num; }//这里"<"号代表了所有类似“==”“原创 2017-10-13 21:26:16 · 661 阅读 · 10 评论 -
<基础基础> 队列 向量 栈
记一下可能会用到的东西vector.resize(n) 将向量改成空间大小为n的数组priority_queue.top() 还有就是记一下这鬼单词咋写....front() 这个是普通queue的.pop() 删除队首stack.push( )...栈先跳过,感觉自己不会用原创 2017-11-06 21:27:35 · 324 阅读 · 0 评论 -
邻接表存图
奇奇怪怪的东西: 如下代码struct ss{ int to,va,nex;}edge[];int ecnt,head[];void add(int x,int y,int v){ edge[++ecnt]=(ss){y,v,head[x]}; head[x]=ecnt;}int mian(){//单向边输入 : 起点 终点 权值 add(read(),re原创 2017-10-11 20:50:42 · 226 阅读 · 0 评论