
堆/左偏树
OI界第一麻瓜
入门菜鸟
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
bzoj 1455: 罗马游戏 左偏树入门
左偏树第一题,纪念一下 大概讲一下左偏树吧。。 首先它是一个可以合并的堆,因此是可并堆的一种 什么叫可以合并呢 就是说现在给你两个堆,我现在要你将他们合并起来,变成一个新的堆 要是一般的写法我们是要讲所有数拿出来,再重新插进去 但很显然这样的时间是过不去的。。 于是就有了这个东西 至于可并堆别的实现方法,(⊙v⊙)嗯,还不会。。至于为什么叫左偏树呢,就是因为他左偏的性质 左偏啊,就原创 2017-07-15 11:54:34 · 369 阅读 · 0 评论 -
bzoj 3011: [Usaco2012 Dec]Running Away From the Barn
题意 给出以1号点为根的一棵有根树,问每个点的子树中与它距离小于等于l的点有多少个。 题解 左偏树裸题。。 太久没写,来复习一下模板 CODE: #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> using namespace std...原创 2018-03-13 19:27:04 · 234 阅读 · 0 评论 -
bzoj 5102: [POI2018]Prawnicy
题意 定义一个区间(l,r)的长度为r-l,空区间的长度为0。 给定数轴上n个区间,请选择其中恰好k个区间,使得交集的长度最大。 题解 明显地,一个极大区间的两个端点肯定是给出区间的端点 于是你就可以对左端点排序 考虑一个和发的右端点r 明显是有至少k个区间的r在他右边 这个的话有两种方法写,一个是建立线段树,在线段树上二分 第二个是维护一个只有k个元素的堆 CODE: ...原创 2018-02-23 15:51:41 · 309 阅读 · 0 评论 -
1115 最大M子段和 V2和3
题意 N个整数组成的序列a[1],a[2],a[3],…,a[n],将这N个数划分为互不相交的M个子段,并且这M个子段的和是最大的。如果M >= N个数中正数的个数,那么输出所有正数的和。 例如:-2 11 -4 13 -5 6 -2,分为2段,11 -4 13一段,6一段,和为26。 V3是在环上的 题解 和之前bzoj的题差不多 都是贪心+堆+链表维护 这里就不再赘述 如...原创 2018-02-27 07:46:37 · 294 阅读 · 0 评论 -
51nod 1380 夹克老爷的逢三抽一
题意 又到了诺德县的百姓孝敬夹克大老爷的日子,带着数量不等的铜板的村民准时聚集到了村口。 夹克老爷是一位很”善良”的老爷,为了体现他的仁慈,有一套特别的收钱的技巧。 1、让所有的村民排成一队,然后首尾相接排成一个圈。 2、选择一位村民收下他的铜钱,然后放过他左右两边的村民。 3、让上述三位村民离开队伍,并让左右两边的其他村民合拢起来继续围成一个圈。 4、重复执行2、3直到村民全部离开。...原创 2018-02-10 12:40:01 · 437 阅读 · 0 评论 -
bzoj 5059: 前鬼后鬼的守护
可并堆原创 2017-12-26 08:38:36 · 331 阅读 · 0 评论 -
bzoj4586: [Usaco2016 Open]Landscaping
好题+堆+贪心原创 2017-09-03 21:31:43 · 682 阅读 · 0 评论 -
有关左偏树的使用与理解
合并操作这是属于一个左偏树的基本操作了吧。。这里就不做解释了 时间O(logn)O(logn)int Merge (int x,int y) { if (x==0) return y; if (y==0) return x; if (v[x]>v[y]) swap(x,y);//保证x可以做根 r[x]=Merge(r[x],y); if (d[r[x]]>原创 2017-07-15 14:54:25 · 421 阅读 · 0 评论 -
bzoj4933: 妙
这题做了挺久,反正我不会做,一开始以为是可并堆。。然后不会 哈哈,去请教了Claris大佬 以下是一个悲伤的故事 Claris: K短路 但是我这么菜。。看了一脸懵逼啊(其实那时候我连K短路都不会) 于是我就说,能不能详细点 Claris:把树转成图 然后求K短路 好吧QAQ,上面就是详细版本了,莫名感觉被D飞。。能不能再详细一点啊【不要脸】 于是Claris无奈地给了画了一张原创 2017-07-26 15:33:09 · 576 阅读 · 0 评论 -
poj2823 区间内最值的不同解法
题目大意:给定一个n个数的数列,从左至右输出每个长度为m的数列段内的最大/小数。 然后这题到底有什么解法呢?解法1这道题的标解肯定是单调队列啦,挺好写,当时好像就是这道题是单调队列的入门来着,时间复杂度O(n) 具体的我就不讲了#include<cstdio> #include<cstring> const int N=1000005; int n,m; int s[N]; int st,ed;原创 2017-08-02 21:42:22 · 854 阅读 · 0 评论 -
2809: [Apio2012]dispatching
没写完,占坑 #include #include #define swap(x,y) {int tt=x;x=y;y=tt;} const int N=100005; int n,m; int b[N],c[N];//薪水 领导力 struct qq{int x,y,last;}e[N]; int num,last[N]; void init (int x,int y) { num++;原创 2017-07-15 17:02:24 · 322 阅读 · 1 评论 -
偏离路 k小路模板 poj2449Remmarguts' Date
首先呢,前几天学了A*算法来弄k小路。。 但是我很快就发现A*实在是太慢太慢太慢了。。 完全是可以被卡到O(nk)O(nk)的 又由于题目的需要,这样的复杂度已经无法满足我们的需求 于是就去学了另外的方法,但由于网上的资料实在是少之又少。。 于是我就去找了一下大牛 感谢Claris大佬!百忙之间抽空给了我论文与他的模板!!非常感谢!! 论文名字是《俞鼎力-堆的可持久化与k短路》,想学的原创 2017-07-18 16:33:27 · 491 阅读 · 0 评论 -
bzoj 1367: [Baltic2004]sequence
左偏树的大难题。。 只能逼自己看论文咯,我有什么办法啊 这个的话,我建议可以看ppt,感觉ppt比word那个稍微好一点点。。至少有图 然后就没什么了。。 哦,还有一个常用的技巧,看代码吧,有注释#include<cstdio> #include<cstring> typedef long long LL; #define swap(x,y) {int tt=x;x=y;y=tt;} con原创 2017-07-15 16:20:00 · 383 阅读 · 0 评论 -
Codeforces Round #352 (Div. 1) D. Roads in Yusland
可并堆+贪心原创 2018-03-14 16:20:03 · 257 阅读 · 0 评论