OIer
Cin.白术
若有来生,我愿为树,一叶之灵,窥尽全秋。
展开
-
KMP与AC自动机
KMP算法介绍 KMP算法是用来处理字符串匹配问题的。也就是给你两个字符串,你需要回答B串是否是A串的子串。我们称等待匹配的A串为主串(母串),用来匹配的B串为模式串。 解决这类问题,通常是枚举从A串的什么位置开始与B串匹配,然后验证是否能够匹配。这种朴素算法的时间复杂度为O(nm)。虽然多数情况下枚举的复杂度是可以接受的,原创 2019-11-12 20:11:39 · 749 阅读 · 0 评论 -
最小生成树&次小生成树算法精讲
最小生成树定义最小生成树,是在一个n点边的强连通无向图中,边权值之和最小的n点n-1条边的强连通量(树),一般情况下可以与并查集同解,常见的使用prim和kruskal。性质MST性质:设G=(V,E)是一个连通网络,U是顶点集V的一个非空真子集。若(u,v)是G中一条“一个端点在U中(例如:u∈U),另一个端点不在U中的边(例如:v∈V-U),且(u,v)具有最小权值,则一定存在...原创 2019-10-31 21:32:25 · 3082 阅读 · 0 评论 -
C++小程序:拯救公主(文字游戏)
介绍这是我之前在*州进行夏令营集训的时候一个满分大佬王永涵因为晚自习过于无聊打的一个程序。我只是做一个搬运工,没有具象的图片输出,“这应该是一个比较辣鸡的程序吧,超级粗糙”王永涵说。原创 2019-10-24 06:41:38 · 2249 阅读 · 0 评论 -
三种常用最短路的分析优化
目录前言问题基本类型算法解析Floyd前言最短路分三种算法,分别是Floyd,dijkstra,spfa。不同于其他算法的事,最短路的三种算法全都要求掌握。Floyd是多源最短路算法,时间复杂度O(n^3)。dijkstra与spfa都是单源最短路算法,但dijkstra不支持负权,spfa容易被卡常数。另外再提一句,没有堆优化的spfa不如dijkstra。问题基本类型求解最短路经...原创 2019-10-18 20:03:45 · 699 阅读 · 0 评论 -
C++版贪吃蛇代码
虽然之前因为某些繁琐的小事耽误了一年,然后后来断断续续有开始写博文,但是毕竟之前的老底是在的,于是就寻思着自己打一个贪吃蛇游戏玩一玩,没想到还真就操作出来了(v1.1)。虽然有一点成就感,但是不至于太过兴奋(毕竟是单机的)。所以我从五六月的时候就去创作了一个人机对战版本(v1.2)的,然后陆续增加了双人对战和双机对战,稍加修饰了一下。如果你喜欢的话就请点个关注吧。废话不多说了,上代码。(v1...原创 2019-10-09 20:18:00 · 1405 阅读 · 1 评论 -
线段树的基本操作(入门必备)
线段树线段树算是一种较为常用的数据结构,它在落谷中的定位是树形结构:比如说有趣线段树的使用线段树既然是一个算法(←废话),那么它一定有自身的用处。经研究发现,计算最值的最佳算法是RMQ,O(1)的查询和O(nlogn)的预处理几乎是这类问题的时间复杂度缩短到最低,但是一旦进行了单点修改之后,就要重新进行一次处理。而计算区间和的最优解是前缀和算法,O(1)的查询和O(n)的预处理为此...原创 2019-09-17 18:43:44 · 747 阅读 · 0 评论 -
lca完美解答
首先还是老样子,观察一下lca的分类:emmmm,真好。关于树上距离很明显就不用再多说了,那么就直接开始LCA的算法详解↓其次对于lca,算是OI中比较重要的一种算法了,首先先说一下第一种解法转RMQ解首先,在你看这个解法之前,你必须要保证理解ST的RMQ算法→→→→→传送门lca(最近公共祖先):在有根树当中,节点u和v的公共祖先中最小的那一个点。比...原创 2019-04-30 13:12:38 · 248 阅读 · 0 评论 -
RMQ算法详解之ST
RMQ问题:区间最小值问题(也可以解决区间最大值问题)解决算法:Sparse - Table算法,简称ST,基于动态规划求区间最值的算法ST算法分为预处理和查询两部分首先定义数组:我们用定义 maxx[i][j] 为从 i开始的,长度为2^j的区间里面的最大值,Amin[i][j]为从i开始,长度为2^j的区间里面的最小值预处理首先我们对于区间的预处理是将长度为2^j...原创 2019-04-18 16:59:04 · 211 阅读 · 0 评论 -
tarjan的部分讲解及有关证明解答
LCA(Tarjan)分类,使每个结点都落到某个类中,到时候只要执行集合查询,就可以知道结点的LCA了。对于一个结点u.类别有:以u为根的子树、除类一以外的以f(u)为根的子树、除前两类以外的以f(f(u))为根的子树、除前三类以外的以f(f(f(u)))为根的子树……类一的LCA为u,类二为f(u),类三为f(f(u)),类四为f(f(f(u)))。这样的分类看起来好像并不困难。但关...原创 2019-04-13 14:15:13 · 352 阅读 · 0 评论 -
关于背包的几种常见题型
关于01背包,本意是给定N件重量为m[i]、价值为w[i]的物品和承重为V的背包,求在背包承重范围内接受物品的最大价值。很明显,01背包的特点就是每件物品只有一件,选择放/1或者不放/0。原创 2019-04-02 12:59:22 · 365 阅读 · 0 评论 -
简析 区间DP
一.什么是区间DP?顾名思义:区间dp就是在区间上进行动态规划,求解一段区间上的最优解。主要是通过合并小区间的 最优解进而得出整个大区间上最优解的dp算法。二.伪代码:for (int len = 2 -> n) //枚举长度{ for (int i = 1 -> n-len+1) //枚举起点 { int end = i+len-1...原创 2019-03-26 13:17:34 · 234 阅读 · 0 评论