Live2D

随笔分类 -  算法学习笔记

摘要:这也是洛谷P3379 【模板】最近公共祖先(LCA)的代码 1.首先预处理upto[i][j]表示点i向上跳2j 个点到达的点,d[i]表示i的深度 2.然后把两个被询问的点搬到同一深度,具体操作是: 假设深的点为a,那么a每次把a迭代为 upto[a][log2(d[a]-d[b])] ,直到d[ 阅读全文
posted @ 2019-02-17 12:05 SHGEEK 阅读(287) 评论(0) 推荐(0)
摘要:用来查询区间最值(区间和,差等要处理重复部分) 下面均以以最大值为例 初始化 0(nlogn) 设st[i][k]为下标i开始的2k个元素的最值 则: st[i][k]=max{st[i][k-1],st[i+2k-1][k-1]} 即区间[i,i+2k -1]的前一半和后一半的最值取最大 查询 O 阅读全文
posted @ 2019-02-14 17:18 SHGEEK 阅读(158) 评论(2) 推荐(0)
摘要:配对堆是一种可并堆(可以将两个堆合并,且速度快),时间复杂度: 合并merge:O(1) 插入push:O(1) 弹出pop:O(logn) 配对堆不是二叉堆(我一开始不知道这个所以一直搞不懂) 配对堆存树的方式不一样,如图,对于每个节点,有一条边指向最左边的儿子,一条指向他右边的兄弟 和普通树的对 阅读全文
posted @ 2019-02-14 10:49 SHGEEK 阅读(567) 评论(0) 推荐(0)
摘要:今天学历配对堆,然鹅我把普通的堆忘了,配对堆也听得云里雾里。。。现在自己来现场yy一下 手写堆 push就把元素放到最后面,不断把他和父亲比较,上浮 pop就把堆顶和最后一个元素交换,然后对交换后的堆顶不断和他的左右儿子比较(选左右儿子中优先级高的比),下沉,最大下沉到最后一个元素下标-1的位置,然 阅读全文
posted @ 2019-02-13 19:45 SHGEEK 阅读(321) 评论(1) 推荐(0)
摘要:背景 我是DP超级大蒟蒻,这种问题上课听一脸懵逼, 于是今天下午拿出来好好补。。。 这里只举最长上升子序列的栗子 O(n^2)做法 在序列a 设dp[i]是以第i个数结束的最长上升子序列的长度 那么对于每一个i,枚举j满足j<i&&a[j]<a[i]的最大dp[j] 那么dp[i]=dp[j]+1; 阅读全文
posted @ 2019-02-01 21:03 SHGEEK 阅读(197) 评论(0) 推荐(0)
摘要:背景 花了一个上午,终于把树状数组弄懂了。。。 打了三种树状数组的模板:树状数组单点更新区间查询,线段树区间更新单点查询,树状数组区间更新区间查询。 第三种太毒了,,,好久才明白 树状数组 就是树一样的数组,它的底层实现其实就是一个数组,但是我们把它yy成了一棵树。。。 他的每一列的最顶端有一个元素 阅读全文
posted @ 2019-01-31 13:33 SHGEEK 阅读(535) 评论(1) 推荐(0)
摘要:背景 今天课上讲了树状数组和线段树,有是一脸懵逼。。。 于是网上有恶补了一下, 看了几个小时blog终于懂了。。。 由于很难解释,就只贴两个模板代码(一个单点修改+单点和区间查询,一个区间修改+单点和区间查询) 几点注意事项 1.首先跑区间更新的程序,一般对于每一个点要维护一个lazy变量来临时存储 阅读全文
posted @ 2019-01-30 22:11 SHGEEK 阅读(1008) 评论(1) 推荐(0)
摘要:背景 今天下午我该死地点开了洛谷网校找虐。。。听tarjan全程懵逼。。。于是乎,我查遍的各种资料、博客、b站(我竟然在b站上学习) 顺便贴上我认为很有帮助我理解的一个视频: 强联通分量 什么是强联通分量? 百度百科: 有向图强连通分量:在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从v 阅读全文
posted @ 2019-01-29 21:34 SHGEEK 阅读(200) 评论(0) 推荐(0)
摘要:实现过程 根据分治三步走策略,归并排序分为划分,递归,合并三个步骤 复杂度O(N*log2N) 划分 把序列分成左右尽量等长的两半 递归 分别对左右两边进行归并排序 合并 问题是。。。怎么把两个有序序列合并成一个大的有序序列?(;′⌒`) 合并策略:每次比较左右两个序列中最小的那一个,将更小的那个加 阅读全文
posted @ 2019-01-20 15:56 SHGEEK 阅读(236) 评论(0) 推荐(0)
摘要:辗转相除 好像没什么好说明的,就放一个百科吧。。。 辗转相除法, 又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法。它的具体做法是:用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果 阅读全文
posted @ 2019-01-20 12:06 SHGEEK 阅读(259) 评论(0) 推荐(0)
摘要:这几天都在准备初赛,所以没有时间来更新博客了,等缓过这几天来吧。。。心好累。。。 9月份以来好多笔记都没发,慢慢来吧。 排列与组合 绪论:加法原理、乘法原理 1)加法原理:要完成某件任务,分为n种方法,则方案总数为n 2)乘法原理:要完成某件任务,分为n个步骤,完成第一个步骤有m1种方法,完成第二个 阅读全文
posted @ 2018-10-05 14:51 SHGEEK 阅读(1441) 评论(0) 推荐(1)
摘要:例题 传送门 题目描述 一条单向的铁路线上,依次有编号为 1, 2, …, n1,2,…,n的 nn个火车站。每个火车站都有一个级别,最低为 11 级。现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车站 xx,则始发站、终点站之间所有级别大于等于火车站xx 的都必须停靠。 阅读全文
posted @ 2018-09-08 21:25 SHGEEK 阅读(251) 评论(1) 推荐(0)
摘要:背景 开学了,好开心啊! 周末好不容易写篇博客,搞长一点把。。。 最短路概念 这周花了点时间研究最短路问题,那么什么是最短路呢? 摘自百度百科: 最短路问题(short-path problem)是网络理论解决的典型问题之一,可用来解决管路铺设、线路安装、厂区布局和设备更新等实际问题。基本内容是:若 阅读全文
posted @ 2018-09-07 21:36 SHGEEK 阅读(1811) 评论(2) 推荐(0)
摘要:前言 作为一个蒟蒻,一直对动态规划(DP)一知半解。。。 今天一定要弄懂DP! 斐波那契数列 从一个问题开始: 斐波那契数列 1,1,2,3,5,8,13,21,34,55,89...... 斐波那契数列前两项为1,对于除前两项的第i向,f[i]=f[i-1]+f[i-2] 作为一个蒟蒻,当然是想到 阅读全文
posted @ 2018-08-26 19:10 SHGEEK 阅读(508) 评论(0) 推荐(0)
摘要:Kruskal算法 接着上次的写(本来打算过几天再更的...) 上一篇博文写的是Prim算法,接着更Kruskal。 还是上次的栗子: 如果说Prim是从点的角度考虑,那么Kruskal就是从边的角度考虑。 Kruskal也是从贪心的角度解决的——从小到大连接每一条边,当我们选择一条边时,判断是否两 阅读全文
posted @ 2018-08-23 21:34 SHGEEK 阅读(239) 评论(2) 推荐(0)
摘要:背景 今天遇到这样一道题:(洛谷2820) 某个局域网内有n(n<=100)台计算机,由于搭建局域网时工作人员的疏忽,现在局域网内的连接形成了回路,我们知道如果局域网形成回路那么数据将不停的在回路内传输,造成网络卡的现象。因为连接计算机的网线本身不同,所以有一些连线不是很畅通,我们用f(i,j)表示 阅读全文
posted @ 2018-08-23 16:44 SHGEEK 阅读(602) 评论(0) 推荐(0)
摘要:背景 (第一次写博客,没什么经验,另外图画的很丑,请多包涵) 关于存储图的方法,今天研究了一下,终于把邻接表弄懂了。。。 一张有向图图有N个点,M条边,从点u到点v的边表示为(u,v),每条边又有相应的边权w 举个栗子,更方便演示。就像下面这幅图: 我们第一行输入n,m 之后的每一行输入一条边的 u 阅读全文
posted @ 2018-08-21 16:13 SHGEEK 阅读(697) 评论(0) 推荐(1)