Evanyou Blog 彩带

03 2018 档案

摘要:题目传送门 分析:刚看到题目是有点没方向,(毕竟我这蒟蒻才刚学左偏树)然后看了看别的大佬的博客以后大概懂了,将每个骑士丢进一颗左偏树中,然后进行dfs对每一个城池进行搜索,如果某一个骑士在该城池死亡就将其从弹出并记录。然后过程中下放标记就差不多OK了。具体还是看代码吧。 Code: 阅读全文
posted @ 2018-03-22 21:15 HolseLee 阅读(189) 评论(0) 推荐(0)
摘要:题目传送门 分析:首先看小范围的数据,很容易可以想到用DP,方程为f[i][j]=max(f[i-1][j],f[i-2][j-1]+a[i]),f[i][j]表示到第i个坑种了j棵树的最大收益。但是很显然不能过全部数据(亲测只有五十分)。正解以该要用优先队列,将所有的数据丢进一个大根堆中维护,然后 阅读全文
posted @ 2018-03-20 20:29 HolseLee 阅读(238) 评论(0) 推荐(0)
摘要:题目传送门 分析:题目中提到了优先级,很显然这题要用优先队列+模拟。题目中很多细节需要注意,还是在代码中解释吧,这里我用的是手打的堆。 Code: 阅读全文
posted @ 2018-03-20 17:23 HolseLee 阅读(180) 评论(0) 推荐(0)
摘要:题目传送门 分析:这题和另外一个题目中位数非常相似,有兴趣可以先看看,比这一题简单。首先暴力模拟还是别想了,估计30%的数据都有点悬。正解应该是用二叉堆。但是如果用一个堆当然不方便,所以建两个堆,一个大根堆,一个小根堆,每次只要出现询问操作,就把小根堆的堆顶丢进大根堆中维护,然后输出就可以了,但是要 阅读全文
posted @ 2018-03-18 20:29 HolseLee 阅读(281) 评论(0) 推荐(0)
摘要:树状数组总结与讲解 部分参考自:https://www.cnblogs.com/hsd-/p/6139376.html http://blog.csdn.net/yexiaohhjk/article/details/510775 转载请注明出处 树状数组 首先大家都知道二叉树,如下图: 那么现在变形 阅读全文
posted @ 2018-03-17 09:18 HolseLee 阅读(231) 评论(0) 推荐(0)
摘要:题目传送门 分析,首先要查找一个认识的猴子群体(简称猴群)中力气最大的猴子,又要合并两个打完架的猴群,很明显是可并堆的性质,所以这题就是一个左偏树模板。那么套模板就可以了,不过注意,因为要把力气最大的猴子的力气减半,所以就先把它从猴群中删除,减半后放回去再求现在猴群中的力气最大值就可以了。 Code 阅读全文
posted @ 2018-03-15 21:46 HolseLee 阅读(172) 评论(0) 推荐(0)
摘要:题目传送门 首先分析题目,数据范围特别大,500000组询问直接模拟肯定会超时,这里其实很容易可以想到用并查集。我们定义三个数组:fa[]表示每一个飞船的队首,front[]表示每一搜飞船到队首的距离,num[]表示以该飞船为队首的队伍中飞船的数量。每次M操作时就将x的队首的num值清空,并将fa值 阅读全文
posted @ 2018-03-10 15:05 HolseLee 阅读(222) 评论(0) 推荐(0)
摘要:并查集 并查集是什么 并查集是一种用来管理元素分组情况的数据结构。并查集可以高效地进行以下两种操作: 1,查询元素x和y是否属于同一组 2,合并元素x和y所在的组 但是并查集并不支持分割操作。 并查集的结构 并查集也是使用树形结构实现的,不过并不是二叉树。 初始的时候,每一个元素各为一个组,然后通过 阅读全文
posted @ 2018-03-10 14:48 HolseLee 阅读(1269) 评论(0) 推荐(0)
摘要:堆与堆排序 堆 定义:堆是一颗完全二叉树,且满足子结点不大于父节点或不小于父节点,即小根堆和大根堆。堆的每一棵子树也都是一个堆。 下图为一个大根堆。 基本操作:最基本的操作包括插入(insert),向上调整(up),删除(delete),向下调整(down),查询(quary)。 插入insert: 阅读全文
posted @ 2018-03-06 21:36 HolseLee 阅读(215) 评论(0) 推荐(0)