算法专辑
以讲某个算法为主,重心不在讲题
心情想要飞
这个作者很懒,什么都没留下…
展开
-
专辑:主席树(洛谷P3834)
文章目录一个问题前言与可持久化线段树的区别线段树上第kkk小深度的思考回到原题原题代码一个问题点我前言我惊呆了!这竟然只算一个“模板”QwQQwQQwQ(我太弱了?)。正常的主席树模板应该是求序列前缀的第kkk大(小)数,而不是区间的。所以我们进入这个题之前先看看主席树正常怎么做。与可持久化线段树的区别请千万不要把这两个概念搞混了!虽然主席树的名字是乱起的,但是它是“基于权值线段树的可持久化线段树”,而并不是纯粹的可持久化线段树。主席树可以解决的问题都是关于求可持久化的排名(和平衡树有些相似),原创 2020-11-21 19:26:21 · 159 阅读 · 0 评论 -
专辑:Catalan number 卡特兰数(卡塔兰数)
概念卡特兰数序列:1,1,2,5,14,42,132,429,1430,4862,16796...1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796...1,1,2,5,14,42,132,429,1430,4862,16796...卡特兰数递推公式:C(n+1)=C(0)C(n)+C(1)C(n−1)+C(2)C(n−2)+...+C(n)C(0)C(n+1)=C(0)C(n)+C(1)C(n-1)+C(2)C(n-2)+...+C(n)C(0)C(n+1)=原创 2020-11-04 15:28:36 · 469 阅读 · 0 评论 -
专辑:动态规划的推算方法
前言在这里向大家分享以下我的动态规划的思考方法,希望大家能够用上。第一步第一步就是先算好状态里面存的是什么,即max、min、summax、min、summax、min、sum等等。这一步只要把题目读懂了就一定能做出来。第二步第二部就是考虑如何存储状态,就是fi,j,k,...f_{i,j,k,...}fi,j,k,...中的i,j,k...i,j,k...i,j,k...。如果你确定了dpdpdp一定是正解,那么你就可以把它暴力地设计出来。即不爆内存,而且能退出状态转移方程,且这样转移不超时,原创 2020-10-17 20:24:03 · 150 阅读 · 0 评论 -
专辑:树状数组
树状数组统计树状数组,用log(n)的时间解决求前缀和和将a[x]加上一个数。能用树状数组做,当且仅当能够将问题转换为以上两个操作。1、修改一个数void add(int x,int y){ while(x<=n)//在树上所包含的所有集合 { tree[x]+=y; x+=lowbit(x); }}2、求前缀和int get(int x){ int sum=0; while(x)//把一条链分成几段加起来 { su原创 2020-06-06 18:29:00 · 1057 阅读 · 0 评论 -
专辑:线段树
各种线段树统计(全部以求最大为例)线段树,用于查询区间的一些特定值(如:最大、最小、平均数),支持新建、修改和查询操作,空间要开4倍,注意在新建时要初始化1、新建void build(int l,int r,int x){ tree[x]={l,r,0};//在这里不初始化也行,因为已经默认为0了 if(l==r) return; int mid=l+r>>1; build(l,mid,x<<1); build(mid+1,r,x&l原创 2020-06-06 18:23:59 · 349 阅读 · 0 评论