网上有很多人说用dfs序+线段树做...其实stl的堆可以...可并堆可以...很多奇奇怪怪的东西都能做... 可并堆比较好想...也比较好写... 分析: 首先,这是一个网络流做不了的题...数据太大... 其次...我们可以这样考虑一下,这个点的子树中,将这个点的权值仅更新给最大的那个就能满足 ...
分类:
其他好文 时间:
2018-05-04 15:22:52
阅读次数:
143
ACM 所有算法 栈,队列,链表 哈希表,哈希数组 堆,优先队列双端队列可并堆左偏堆 二叉查找树Treap伸展树 并查集集合计数问题二分图的识别 平衡二叉树 二叉排序树 线段树一维线段树二维线段树 树状数组一维树状数组N维树状数组 字典树 后缀数组,后缀树 块状链表 哈夫曼树 桶,跳跃表 Trie树 ...
分类:
编程语言 时间:
2018-04-30 12:04:04
阅读次数:
253
左偏树(Leftist Tree)是一种可并堆的实现。左偏树是一棵二叉树,它的节点除了和二叉树的节点一样具有左右子树指针( left, right)外,还有两个属性,键值和距离(dist)。 键值:是用于比较节点的大小。 距离:节点i称为外节点(external node),当且仅当节点i的左子树或 ...
分类:
其他好文 时间:
2018-04-28 22:24:56
阅读次数:
184
可并堆,就是可以合并的堆 注意并查集不能路径压缩,不然删除根节点时会出错 cpp include include include include include include using namespace std; const int MAXN = 105005; int init() { in ...
分类:
其他好文 时间:
2018-04-27 21:08:14
阅读次数:
147
参考:https://blog.csdn.net/wxh010910/article/details/55806735 一下课件,可并堆部分写的左偏树 cpp include include using namespace std; const int N=600005; int n,m,tot,f ...
BZOJ_1455_罗马游戏_可并堆 Description 罗马皇帝很喜欢玩杀人游戏。 他的军队里面有n个人,每个人都是一个独立的团。最近举行了一次平面几何测试,每个人都得到了一个分数。 皇帝很喜欢平面几何,他对那些得分很低的人嗤之以鼻。他决定玩这样一个游戏。 它可以发两种命令: 1. Merge ...
分类:
其他好文 时间:
2018-04-20 14:38:04
阅读次数:
105
Background 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿。 Description 在这个帮派里,有一名忍者被称之为Master。除了Master以外,每名忍者都有且仅有一个上级。为保密,同时增强忍者们的领导力,所有与他们工作相关的指令总是由上级发送给他的直接 ...
罗马游戏 bzoj-1455 题目大意:给你n个人,2种操作,m次操作:1.将i号士兵所在的集合的最小值删除 2.合并i和j两个士兵所在的团体 注释:$1\le n\le 10^6$,$1\le m \le 10^5$。 想法:又是GXZlegend讲课,可并堆中的左偏树。了解一下: 一个具有堆性质 ...
分类:
其他好文 时间:
2018-04-16 21:09:41
阅读次数:
123
https://www.lydsy.com/JudgeOnline/problem.php?id=2809 板子题wa了一下因为输出ans没有lld 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cs ...
线段树合并,就是将已有的两棵线段树合并为一棵,相同位置的信息整合到一起,通常是权值线段树 比较裸的,就是将一棵线段树的每一个位置取出来插入另一棵中 但比较高效的线段树合并可以参照可并堆的合并方式 线段树合并的原理十分简单,具体步骤如下: 对于两颗树的节点u和v ①如果u为空,返回v ②如果v为空,返 ...
分类:
其他好文 时间:
2018-03-28 20:29:30
阅读次数:
167